---
title: Field Configuration Options
---

The JSON Schema Editor allows you to configure fields through a structured dialog. Fields are organized into logical sections to streamline the configuration experience.

## Section 1: Basics

These properties define the fundamental identity and behavior of a field.

| Property | Label | Type | Description |
|---|---|---|---|
| `title` | Feld Name | `string` | Human-readable name for the field (e.g. "Vorname", "Anzahl der Türen", "Ist aktiv"). |
| `key` | Technischer Name | `string` | Unique identifier for the field. Automatically generated from the field title using `createPropertyName`. **Only visible when adding a new field** — hidden in edit mode to prevent breaking existing data. |
| `description` | Beschreibung | `string` | Help text displayed to users below the field input. |
| `required` | Pflichtfeld | `boolean` | Whether this field must be filled in. Marks the field as required in the schema. |

> **Note:** The `key` field is only visible when adding a new field. Once a field has been created, its key is permanently locked — the key field is hidden in edit mode to prevent accidental data corruption. The key is automatically derived from the field title (via `createPropertyName`) if not explicitly provided.

## Section 2: Field Type

These properties control how the field stores and presents its data.

| Property | Label | Type | Description |
|---|---|---|---|
| `type` | Feld Typ | `string` | The data type of the field (e.g. `string`, `number`, `boolean`, `object`, `array`). |
| `inputWidget` | Darstellung | `string` | Controls how the field is rendered in the UI. Previously labeled "Eingabe-Widget". |
| `defaultValue` | Standardwert | `string` | Default value applied to new entries when no value is provided. |

### inputWidget / Darstellung

The `inputWidget` property (shown as **Darstellung** in the UI) determines the visual presentation and input method for the field. The available options depend on the selected field type.

## Section 3: Translations

These properties provide localized versions of the field's name and description. They are intended for multilingual deployments.

| Property | Label | Type | Description |
|---|---|---|---|
| `i18nTitle` | Feld Name (übersetzt) | `object` | Translations of the field name for different languages. Uses the inline translation widget. |
| `i18nDescription` | Beschreibung (übersetzt) | `object` | Translations of the field description for different languages. Uses the inline translation widget. |

## Add vs. Edit Mode

The field configuration dialog behaves differently depending on whether you are adding a new field or editing an existing one.

| Behavior | Add Mode | Edit Mode |
|---|---|---|
| `key` field visible | ✅ Yes | ❌ No (locked) |
| Key derived automatically | ✅ From `key` or `title` | — |
| Duplicate key check | ✅ Error shown, field not added | — |

### Key Generation

When adding a field, the technical key (`key`) is sanitized via `createPropertyName` to ensure it is a valid property identifier. If no explicit key is provided, it is derived from the `title` value. This means entering a **Feld Name** is sufficient — the **Technischer Name** will be generated automatically.

### Duplicate Key Detection

When adding a new field, the editor checks whether a field with the same generated key already exists in the schema. If a duplicate is detected, the dialog displays an error message:

> *Ein Feld mit dem Schlüssel "{key}" existiert bereits.*

The field will not be added until the conflict is resolved — either by choosing a different **Feld Name** or adjusting the **Technischer Name** so that it is unique within the schema.

> **Important:** The key cannot be changed after a field is created. Changing a field's key would break references to existing data stored under that key, so the key field is intentionally hidden when editing.

## Example: Adding a New Field

1. Enter a **Feld Name** (e.g. `Vorname`).
2. The **Technischer Name** is automatically populated (e.g. `vorname`) based on the entered name.
3. Optionally review or adjust the **Technischer Name** before saving — it cannot be changed later.
4. If a field with the same **Technischer Name** already exists, an error will be shown and you must choose a unique name before proceeding.
5. Optionally add a **Beschreibung** and mark the field as **Pflichtfeld**.
6. Select the appropriate **Feld Typ** and **Darstellung**.
7. Set a **Standardwert** if needed.
8. Optionally provide translations under the Translations section.
9. Click **Hinzufügen** to save.

## Example: Editing an Existing Field

1. Open the field configuration for an existing field.
2. The **Technischer Name** is not shown — it is locked and cannot be changed.
3. Modify any other properties as needed.
4. Click **Speichern** to apply changes.
