---
title: "Custom Data Field JSON Configuration Reference"
description: "Which columns_json and front_json keys are set from the table editor vs JSON panel."
---

# Custom Data Field JSON Configuration Reference

Short reference: which keys in `columns_json` and `front_json` are controlled from the **Custom Data model editor**, and which only via the **JSON** toggle or the [advanced reference](./advanced-model-options-reference.md).

## Configuration levels

| Level | UI location | Stored as |
| --- | --- | --- |
| **Field type** | **Fields** tab → field card | `type`, semantics (`system_ref`, `association`, `options`, …) |
| **Data & validation** | **Fields** → card details | `default`, `unique`, `rules`, `non_editable` |
| **Display** | **Field display** | `width`, `align`, `hidden_in_table`, `modal_entity`, `columns_chooser`, `table_stylization`, `modal_entity_layout` |
| **Advanced** | **JSON** or advanced reference | `hidden_all`, `hide_in_filter`, `highlight_rules`, widgets (`MAP`, `SLIDER`, …) |

## Field card controls

| Control | JSON key | Purpose |
| --- | --- | --- |
| Default value | `default` | Initial value on record create |
| Required | `rules: ["required"]` | Field must be filled |
| Unique values | `unique` | UNIQUE index in DB |
| View only | `non_editable` | Block inline edit in table |
| Validation rules | `rules` | `email`, `url`, `digits`, `json`, … |

Type-driven keys (`system_ref`, `association`) come from the selected **Type**, not separate card fields.

## Field display tab

| UI setting | Storage |
| --- | --- |
| Field order (drag-and-drop) | `columns_chooser[].position` |
| **Table** toggle | `columns_json[key].hidden_in_table` + `columns_chooser[].active` |
| **Card** toggle | membership in `front_json.modal_entity` |
| Label / icon / color / editable | `front_json.modal_entity[key].{label,icon,icon_color,editable}` |
| Width / alignment | `columns_json[key].{width,align}` |
| Column total | `columns_json[key].total_*` + `front_json.table_stylization.total_row` |
| Row highlighting | `front_json.table_stylization.colorize` or `highlight_rules` |
| Record card groups | `front_json.modal_entity_layout` |

### `modal_entity_layout`

```json
{
  "version": 1,
  "display": "accordion",
  "groups": [
    { "id": "main", "title": "Main", "fields": ["name", "status"] }
  ]
}
```

- Fields with **Card** enabled but no group go to **Other**.
- Without `modal_entity_layout` the record card is a flat list (backward compatible).

## System types (`system_ref`)

```json
{
  "type": "INTEGER",
  "label": "Assignee",
  "system_ref": "user"
}
```

Allowed values: `user`, `skill_group`, `subject`, `chat_status`, `tag`, `priority`. Stored as INTEGER id in DB.

## Read next

- [Configure field display](../how-to/configure-field-display.md)
- [Advanced model options](./advanced-model-options-reference.md)
- [Semantic field types](./semantic-field-types-reference.md)
