> For the complete documentation index, see [llms.txt](https://docs.api.intratool.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.api.intratool.de/api-reference/forms/form-fields.md).

# FormFields

## Introduction

`FormFields` define the inputs and informational elements of [Forms](/api-reference/forms/forms.md).

Rich-text values in `default_value` and type-specific `config` keys use the shared [Rich Text](/introduction/rich-text.md) HTML format. This applies to the `rich-text` and `description` type values and the `privacy-policy` type's `config.text` value.

## Model Definition

**Alias**

`formField`

**Capabilities**

* [Entity Permissions](/introduction/resource-capabilities/entity-permissions.md) - Access is inherited through the parent form.
* [Translations](/introduction/resource-capabilities/translations.md) - Localizes `name`, `default_value`, `placeholder`, and `description`; examples use `en-US`.

**Relations**

| Key                   | Relation                                                                            | Type          | Relation Field(s)              |
| --------------------- | ----------------------------------------------------------------------------------- | ------------- | ------------------------------ |
| `form`                | [Form](/api-reference/forms/forms.md) or another supported form entity              | Morph to      | `form_type`, `form_id`         |
| `fieldType`           | [FormFieldType](/api-reference/forms/form-field-types.md)                           | Belongs to    | `form_field_type_id`           |
| `defaultValueSources` | [DefaultValueSources](/api-reference/forms/default-value-sources.md)                | Has many      | `form_field_id`                |
| `fieldValidations`    | [FormFieldValidations](/api-reference/forms/form-field-validations.md)              | Has many      | `form_field_id`                |
| `displayConditions`   | [FormFieldDisplayConditions](/api-reference/forms/form-field-display-conditions.md) | Has many      | Attachables                    |
| `layoutColumns`       | [LayoutColumns](/api-reference/layouts/layout-columns.md)                           | Morph to many | `layout_column_layout_element` |

## List

List visible `FormFields`.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/forms/fields`

**Request Keys**

| Key         | Type      | Default           | Description                                                         |
| ----------- | --------- | ----------------- | ------------------------------------------------------------------- |
| `selects`   | `string`  | All fields        | Comma-separated fields to return.                                   |
| `relations` | `string`  | Default relations | Pipe-separated relations to include.                                |
| `limit`     | `integer` | No limit          | Maximum number of form fields.                                      |
| `filters`   | `object`  | No filters        | [Value filters](/introduction/query-manipulation/value-filters.md). |

**Example Request**

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

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

{% endtab %}
{% endtabs %}

**Example Response**

```json
[
  {
    "id": 301,
    "form_id": 21,
    "form_type": "form",
    "form_field_type_id": "text",
    "lang_id": "en-US",
    "name": "Full name",
    "key": "full-name",
    "default_value": null,
    "placeholder": "First and last name",
    "description": "Enter the name used for follow-up.",
    "config": {
      "scanner": false
    },
    "sort_number": 1,
    "disabled": false,
    "hidden": false
  },
  {
    "id": 302,
    "form_id": 21,
    "form_type": "form",
    "form_field_type_id": "entity-select",
    "lang_id": "en-US",
    "name": "Mentor",
    "key": "mentor",
    "default_value": "7",
    "placeholder": "Select a mentor",
    "description": null,
    "config": {
      "entity_type": "user",
      "selectable_entities_filters": {
        "active": true
      },
      "representation": {
        "label_template": null,
        "result_template": null,
        "display": {
          "type": "select-modal",
          "config": null
        }
      }
    },
    "sort_number": 2,
    "disabled": false,
    "hidden": false
  }
]
```

## List by Form

List visible `FormFields` for one `Form`.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/forms/{formEntity}/fields`

**Route Parameters**

| Parameter    | Type      | Description |
| ------------ | --------- | ----------- |
| `formEntity` | `integer` | Form ID.    |

**Request Keys**

| Key         | Type      | Default           | Description                          |
| ----------- | --------- | ----------------- | ------------------------------------ |
| `selects`   | `string`  | All fields        | Comma-separated fields to return.    |
| `relations` | `string`  | Default relations | Pipe-separated relations to include. |
| `limit`     | `integer` | No limit          | Maximum number of fields.            |

**Example Request**

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

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

{% endtab %}
{% endtabs %}

**Example Response**

```json
[
  {
    "id": 301,
    "form_id": 21,
    "form_type": "form",
    "form_field_type_id": "text",
    "lang_id": "en-US",
    "name": "Full name",
    "key": "full-name",
    "default_value": null,
    "placeholder": "First and last name",
    "description": "Enter the name used for follow-up.",
    "config": {
      "scanner": false
    },
    "sort_number": 1,
    "disabled": false,
    "hidden": false
  },
  {
    "id": 302,
    "form_id": 21,
    "form_type": "form",
    "form_field_type_id": "entity-select",
    "lang_id": "en-US",
    "name": "Mentor",
    "key": "mentor",
    "default_value": "7",
    "placeholder": "Select a mentor",
    "description": null,
    "config": {
      "entity_type": "user",
      "selectable_entities_filters": {
        "active": true
      },
      "representation": {
        "label_template": null,
        "result_template": null,
        "display": {
          "type": "select-modal",
          "config": null
        }
      }
    },
    "sort_number": 2,
    "disabled": false,
    "hidden": false
  }
]
```

## Show

Show one visible `FormField`.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/forms/fields/{formField}`

**Route Parameters**

| Parameter   | Type      | Description    |
| ----------- | --------- | -------------- |
| `formField` | `integer` | Form field ID. |

**Request Keys**

| Key         | Type     | Default           | Description                          |
| ----------- | -------- | ----------------- | ------------------------------------ |
| `selects`   | `string` | All fields        | Comma-separated fields to return.    |
| `relations` | `string` | Default relations | Pipe-separated relations to include. |

**Example Request**

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

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

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "id": 302,
  "form_id": 21,
  "form_type": "form",
  "form_field_type_id": "entity-select",
  "lang_id": "en-US",
  "name": "Mentor",
  "key": "mentor",
  "default_value": "7",
  "placeholder": "Select a mentor",
  "description": null,
  "config": {
    "entity_type": "user",
    "selectable_entities_filters": {
      "active": true
    },
    "representation": {
      "label_template": null,
      "result_template": null,
      "display": {
        "type": "select-modal",
        "config": null
      }
    }
  },
  "sort_number": 2,
  "disabled": false,
  "hidden": false
}
```

## List Preselected Entities

List entities preselected for one `FormField`.

**Definition**

<mark style="color:yellow;">`POST`</mark> `/api/forms/fields/{formField}/preselected-entities`

**Route Parameters**

| Parameter   | Type      | Description                  |
| ----------- | --------- | ---------------------------- |
| `formField` | `integer` | Entity-select form field ID. |

**Request Keys**

| Key        | Type      | Default               | Description                                                                                                              |
| ---------- | --------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `page`     | `integer` | `1`                   | Result page.                                                                                                             |
| `per_page` | `integer` | Server default        | Results per page.                                                                                                        |
| `filter`   | `object`  | No additional filters | Additional [value filters](/introduction/query-manipulation/value-filters.md); configured field filters take precedence. |

**Behavior**

* The field must use an entity-select type. Its `default_value` supplies the selected entity IDs.
* This endpoint uses [count-less pagination](/introduction/query-manipulation/result-control.md#count-less-pagination), so `total` is `null`.

**Example Request**

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

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/forms/fields/302/preselected-entities', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        'page' => 1,
        'per_page' => 2
    ]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "current_page": 1,
  "data": [
    {
      "id": 7,
      "title": "Ada Lovelace",
      "sub_title": "ada.lovelace",
      "description": "Engineering"
    },
    {
      "id": 8,
      "title": "Grace Hopper",
      "sub_title": "grace.hopper",
      "description": "Product"
    }
  ],
  "from": 1,
  "last_page": 1,
  "per_page": 2,
  "to": 2,
  "total": null
}
```

## List Selectable Entities

List entities selectable for one `FormField`.

**Definition**

<mark style="color:yellow;">`POST`</mark> `/api/forms/fields/{formField}/selectable-entities`

**Route Parameters**

| Parameter   | Type      | Description                  |
| ----------- | --------- | ---------------------------- |
| `formField` | `integer` | Entity-select form field ID. |

**Request Keys**

| Key        | Type      | Default               | Description                                                                                                              |
| ---------- | --------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `page`     | `integer` | `1`                   | Result page.                                                                                                             |
| `per_page` | `integer` | Server default        | Results per page.                                                                                                        |
| `filter`   | `object`  | No additional filters | Additional [value filters](/introduction/query-manipulation/value-filters.md); configured field filters take precedence. |

**Behavior**

* Configured field filters are merged with request filters and take precedence.
* This endpoint uses [count-less pagination](/introduction/query-manipulation/result-control.md#count-less-pagination), so `total` is `null`.

**Example Request**

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

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/forms/fields/302/selectable-entities', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        'page' => 1,
        'per_page' => 2
    ]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "current_page": 1,
  "data": [
    {
      "id": 7,
      "title": "Ada Lovelace",
      "sub_title": "ada.lovelace",
      "description": "Engineering"
    },
    {
      "id": 8,
      "title": "Grace Hopper",
      "sub_title": "grace.hopper",
      "description": "Product"
    }
  ],
  "from": 1,
  "last_page": 1,
  "per_page": 2,
  "to": 2,
  "total": null
}
```

## List Entity Filters

List selectable-entity filters for one `FormField`.

**Definition**

<mark style="color:yellow;">`POST`</mark> `/api/forms/fields/{formField}/selectable-entities/filters`

**Route Parameters**

| Parameter   | Type      | Description                  |
| ----------- | --------- | ---------------------------- |
| `formField` | `integer` | Entity-select form field ID. |

**Request Keys**

| Key      | Type     | Default               | Description                                                                                             |
| -------- | -------- | --------------------- | ------------------------------------------------------------------------------------------------------- |
| `filter` | `object` | No additional filters | Additional value filters used to calculate available options; configured field filters take precedence. |

**Example Request**

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

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/forms/fields/302/selectable-entities/filters', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        'filter' => [
            'active' => true
        ]
    ]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "data": [
    {
      "key": "department_id",
      "type": "multi-select",
      "title": "Department"
    },
    {
      "key": "role_id",
      "type": "multi-select",
      "title": "Role"
    }
  ]
}
```

## List Entity Filter Options

List options for one selectable-entity filter of a `FormField`.

**Definition**

<mark style="color:yellow;">`POST`</mark> `/api/forms/fields/{formField}/selectable-entities/{filterKey}/options`

**Route Parameters**

| Parameter   | Type      | Description                  |
| ----------- | --------- | ---------------------------- |
| `formField` | `integer` | Entity-select form field ID. |
| `filterKey` | `string`  | Multi-select filter key.     |

**Request Keys**

| Key        | Type      | Default        | Description       |
| ---------- | --------- | -------------- | ----------------- |
| `page`     | `integer` | `1`            | Result page.      |
| `per_page` | `integer` | Server default | Results per page. |

**Behavior**

This endpoint uses [count-less pagination](/introduction/query-manipulation/result-control.md#count-less-pagination), so `total` is `null`.

**Example Request**

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

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/forms/fields/302/selectable-entities/department_id/options', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        'page' => 1,
        'per_page' => 2
    ]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "current_page": 1,
  "data": [
    {
      "value": 6,
      "label": "Engineering",
      "additionalData": []
    },
    {
      "value": 9,
      "label": "Product",
      "additionalData": []
    }
  ],
  "from": 1,
  "last_page": 1,
  "per_page": 2,
  "to": 2,
  "total": null
}
```

## Admin: List

List all `FormFields` in administration scope.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/administration/forms/fields`

**Request Keys**

| Key         | Type      | Default           | Description                                                         |
| ----------- | --------- | ----------------- | ------------------------------------------------------------------- |
| `selects`   | `string`  | All fields        | Comma-separated fields to return.                                   |
| `relations` | `string`  | Default relations | Pipe-separated relations to include.                                |
| `limit`     | `integer` | No limit          | Maximum number of form fields.                                      |
| `filters`   | `object`  | No filters        | [Value filters](/introduction/query-manipulation/value-filters.md). |

**Behavior**

The administration list may include soft-deleted fields.

**Example Request**

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

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

{% endtab %}
{% endtabs %}

**Example Response**

```json
[
  {
    "id": 301,
    "form_id": 21,
    "form_type": "form",
    "form_field_type_id": "text",
    "lang_id": "en-US",
    "name": "Full name",
    "key": "full-name",
    "default_value": null,
    "placeholder": "First and last name",
    "description": "Enter the name used for follow-up.",
    "config": {
      "scanner": false
    },
    "sort_number": 1,
    "disabled": false,
    "hidden": false
  },
  {
    "id": 302,
    "form_id": 21,
    "form_type": "form",
    "form_field_type_id": "entity-select",
    "lang_id": "en-US",
    "name": "Mentor",
    "key": "mentor",
    "default_value": "7",
    "placeholder": "Select a mentor",
    "description": null,
    "config": {
      "entity_type": "user",
      "selectable_entities_filters": {
        "active": true
      },
      "representation": {
        "label_template": null,
        "result_template": null,
        "display": {
          "type": "select-modal",
          "config": null
        }
      }
    },
    "sort_number": 2,
    "disabled": false,
    "hidden": false,
    "deleted_at": "2026-08-01 08:00:00"
  }
]
```

## Admin: List by Form

List all `FormFields` for one `Form` in administration scope.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/administration/forms/{formEntity}/fields`

**Route Parameters**

| Parameter    | Type      | Description |
| ------------ | --------- | ----------- |
| `formEntity` | `integer` | Form ID.    |

**Request Keys**

| Key         | Type      | Default           | Description                          |
| ----------- | --------- | ----------------- | ------------------------------------ |
| `selects`   | `string`  | All fields        | Comma-separated fields to return.    |
| `relations` | `string`  | Default relations | Pipe-separated relations to include. |
| `limit`     | `integer` | No limit          | Maximum number of fields.            |

**Example Request**

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

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

{% endtab %}
{% endtabs %}

**Example Response**

```json
[
  {
    "id": 301,
    "form_id": 21,
    "form_type": "form",
    "form_field_type_id": "text",
    "lang_id": "en-US",
    "name": "Full name",
    "key": "full-name",
    "default_value": null,
    "placeholder": "First and last name",
    "description": "Enter the name used for follow-up.",
    "config": {
      "scanner": false
    },
    "sort_number": 1,
    "disabled": false,
    "hidden": false
  },
  {
    "id": 302,
    "form_id": 21,
    "form_type": "form",
    "form_field_type_id": "entity-select",
    "lang_id": "en-US",
    "name": "Mentor",
    "key": "mentor",
    "default_value": "7",
    "placeholder": "Select a mentor",
    "description": null,
    "config": {
      "entity_type": "user",
      "selectable_entities_filters": {
        "active": true
      },
      "representation": {
        "label_template": null,
        "result_template": null,
        "display": {
          "type": "select-modal",
          "config": null
        }
      }
    },
    "sort_number": 2,
    "disabled": false,
    "hidden": false
  }
]
```

## Admin: Show

Show one `FormField` in administration scope.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/administration/forms/fields/{formField}`

**Route Parameters**

| Parameter   | Type      | Description    |
| ----------- | --------- | -------------- |
| `formField` | `integer` | Form field ID. |

**Request Keys**

| Key         | Type     | Default           | Description                          |
| ----------- | -------- | ----------------- | ------------------------------------ |
| `selects`   | `string` | All fields        | Comma-separated fields to return.    |
| `relations` | `string` | Default relations | Pipe-separated relations to include. |

**Example Request**

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

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

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "id": 302,
  "form_id": 21,
  "form_type": "form",
  "form_field_type_id": "entity-select",
  "lang_id": "en-US",
  "name": "Mentor",
  "key": "mentor",
  "default_value": "7",
  "placeholder": "Select a mentor",
  "description": null,
  "config": {
    "entity_type": "user",
    "selectable_entities_filters": {
      "active": true
    },
    "representation": {
      "label_template": null,
      "result_template": null,
      "display": {
        "type": "select-modal",
        "config": null
      }
    }
  },
  "sort_number": 2,
  "disabled": false,
  "hidden": false
}
```

## Admin: Create

Create a new `FormField`.

**Definition**

<mark style="color:yellow;">`POST`</mark> `/api/administration/forms/fields`

**Request Keys**

| Key                    | Type               | Default                            | Description                                                                                                                                               |
| ---------------------- | ------------------ | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `form_type`\*          | `string`           | `form` for backwards compatibility | Parent morph alias.                                                                                                                                       |
| `form_id`\*            | `integer`          | -                                  | Parent [Form](/api-reference/forms/forms.md) ID.                                                                                                          |
| `form_field_type_id`\* | `string`           | `text` for backwards compatibility | ID from [Available Form Field Types](/api-reference/forms/form-field-types.md#available-form-field-types).                                                |
| `lang_id`              | `string`           | System language                    | Language key. Use `en-US` for this example.                                                                                                               |
| `name`\*               | `string`           | -                                  | Field label.                                                                                                                                              |
| `slug`                 | `string`           | Generated from name                | Source for the normalized `key`.                                                                                                                          |
| `default_value`        | `mixed`            | `null`                             | Default field value.                                                                                                                                      |
| `placeholder`          | `string` \| `null` | `null`                             | Input placeholder.                                                                                                                                        |
| `description`          | `string` \| `null` | `null`                             | Help text.                                                                                                                                                |
| `hidden`               | `boolean`          | `false`                            | Hide the field.                                                                                                                                           |
| `disabled`             | `boolean`          | `false`                            | Disable user input.                                                                                                                                       |
| `config`               | `object`           | Type default                       | Complete type-specific configuration documented with the selected [Form Field Type](/api-reference/forms/form-field-types.md#available-form-field-types). |

Keys with `*` are required after backwards-compatible defaults are applied.

**Behavior**

* When `config` is omitted, the selected type's `default_config` is inserted before validation.
* Defaults containing editor placeholders still require a complete config. In particular, `entity-select` and `entities-select` require a selectable `entity_type`.

**Example Request**

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

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/administration/forms/fields', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        'form_type' => 'form',
        'form_id' => 21,
        'form_field_type_id' => 'entity-select',
        'lang_id' => 'en-US',
        'name' => 'Mentor',
        'slug' => 'mentor',
        'default_value' => '7',
        'placeholder' => 'Select a mentor',
        'description' => null,
        'hidden' => false,
        'disabled' => false,
        'config' => [
            'entity_type' => 'user',
            'selectable_entities_filters' => [
                'active' => true
            ],
            'representation' => [
                'label_template' => null,
                'result_template' => null,
                'display' => [
                    'type' => 'select-modal',
                    'config' => null
                ]
            ]
        ]
    ]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "status": "success",
  "data": {
    "id": 302,
    "form_id": 21,
    "form_type": "form",
    "form_field_type_id": "entity-select",
    "lang_id": "en-US",
    "name": "Mentor",
    "key": "mentor",
    "default_value": "7",
    "placeholder": "Select a mentor",
    "description": null,
    "config": {
      "entity_type": "user",
      "selectable_entities_filters": {
        "active": true
      },
      "representation": {
        "label_template": null,
        "result_template": null,
        "display": {
          "type": "select-modal",
          "config": null
        }
      }
    },
    "sort_number": 2,
    "disabled": false,
    "hidden": false
  }
}
```

## Admin: Update

Update an existing `FormField`.

**Definition**

<mark style="color:blue;">`PUT`</mark> `/api/administration/forms/fields/{formField}`

**Route Parameters**

| Parameter   | Type      | Description    |
| ----------- | --------- | -------------- |
| `formField` | `integer` | Form field ID. |

**Request Keys**

| Key                  | Type               | Default                     | Description                                                                                                                                      |
| -------------------- | ------------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `form_field_type_id` | `string`           | Current value               | New ID from [Available Form Field Types](/api-reference/forms/form-field-types.md#available-form-field-types).                                   |
| `lang_id`            | `string`           | Current value               | Language key.                                                                                                                                    |
| `name`               | `string`           | Current value               | Field label.                                                                                                                                     |
| `slug`               | `string`           | Generated from changed name | Source for the normalized `key`.                                                                                                                 |
| `default_value`      | `mixed`            | Current value               | Default field value.                                                                                                                             |
| `placeholder`        | `string` \| `null` | Current value               | Input placeholder.                                                                                                                               |
| `description`        | `string` \| `null` | Current value               | Help text.                                                                                                                                       |
| `hidden`             | `boolean`          | Current value               | Hide the field.                                                                                                                                  |
| `disabled`           | `boolean`          | Current value               | Disable user input.                                                                                                                              |
| `config`             | `object`           | Current or type default     | Type-specific configuration documented with the selected [Form Field Type](/api-reference/forms/form-field-types.md#available-form-field-types). |

**Behavior**

* When the field type is unchanged and `config` is omitted, validation reuses the current config.
* When `form_field_type_id` changes and `config` is omitted, validation uses the new type's `default_config`. Submit `config` in the same request when that default contains required editor placeholders.

**Example Request**

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

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('PUT', '/api/administration/forms/fields/302', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        'lang_id' => 'en-US',
        'name' => 'Preferred mentor',
        'slug' => 'preferred-mentor',
        'default_value' => '8',
        'placeholder' => 'Choose a colleague',
        'config' => [
            'entity_type' => 'user',
            'selectable_entities_filters' => [
                'active' => true
            ],
            'representation' => [
                'label_template' => null,
                'result_template' => null,
                'display' => [
                    'type' => 'select-modal',
                    'config' => null
                ]
            ]
        ]
    ]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "status": "success",
  "data": {
    "id": 302,
    "form_id": 21,
    "form_type": "form",
    "form_field_type_id": "entity-select",
    "lang_id": "en-US",
    "name": "Preferred mentor",
    "key": "preferred-mentor",
    "default_value": "8",
    "placeholder": "Choose a colleague",
    "description": null,
    "config": {
      "entity_type": "user",
      "selectable_entities_filters": {
        "active": true
      },
      "representation": {
        "label_template": null,
        "result_template": null,
        "display": {
          "type": "select-modal",
          "config": null
        }
      }
    },
    "sort_number": 2,
    "disabled": false,
    "hidden": false
  }
}
```

## Admin: Delete

Delete an existing `FormField`.

**Definition**

<mark style="color:red;">`DELETE`</mark> `/api/administration/forms/fields/{formField}`

**Route Parameters**

| Parameter   | Type      | Description    |
| ----------- | --------- | -------------- |
| `formField` | `integer` | Form field ID. |

**Example Request**

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

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

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "status": "success",
  "data": null
}
```
