OutputField
One column written to the output file — captured from the labeler, copied from the input, or derived by the app.
Every variant shares the keys below. Which further keys are legal depends on type.
| Key | Type | Required | Notes |
|---|---|---|---|
type |
one of 9 values — see below | yes | Selects which shape the rest of this object takes. Every other key is validated against the variant named here. |
name |
string | yes | The column name in the data file. Letters, digits, _ and -, with optional inner spaces; . [ ] * and edge whitespace are excluded. min length 1, matches ^[A-Za-z0-9_-][A-Za-z0-9_ -]*[A-Za-z0-9_-]$|^[A-Za-z0-9_-]$ |
display |
string | FieldDisplay | no | |
fill |
Fill | no | Where this field’s value comes from. Defaults to { "kind": "user" }. |
required |
boolean | no | Whether a record counts as complete without this field. Defaults by fill: something a person is asked for is required, something the app derives is not. |
shortcut |
string | no | Chord that moves focus to this field’s widget, e.g. "mod+1". Unique across the whole config, and not one of the chords the app or OS reserves. matches ^(?:(?:mod|ctrl|alt|shift|meta)\+)*[A-Za-z0-9]$ |
"type": "text"
Section titled “"type": "text"”A string.
| Key | Type | Required | Notes |
|---|---|---|---|
widget |
"text" | "textarea" |
no | How the field renders. Defaults to text. Only a field a person fills may name a widget. |
minLength |
integer | no | Shortest accepted value, in characters. ≥ 0 |
maxLength |
integer | no | Longest accepted value, in characters. ≥ 0 |
pattern |
string | no | JavaScript regular expression the value must match. Compiled when the config loads, so a malformed pattern fails at load rather than at render. |
"type": "integer"
Section titled “"type": "integer"”A whole number.
| Key | Type | Required | Notes |
|---|---|---|---|
widget |
"number" | "slider" |
no | How the field renders. Defaults to number. Only a field a person fills may name a widget. |
min |
number | no | Smallest accepted value, inclusive. |
max |
number | no | Largest accepted value, inclusive. |
step |
number | no | Increment for the number and slider widgets. A hint only, never a validity constraint — three slider clicks legitimately produce 0.30000000000000004. > 0 |
"type": "number"
Section titled “"type": "number"”A number, whole or fractional.
| Key | Type | Required | Notes |
|---|---|---|---|
widget |
"number" | "slider" |
no | How the field renders. Defaults to number. Only a field a person fills may name a widget. |
min |
number | no | Smallest accepted value, inclusive. |
max |
number | no | Largest accepted value, inclusive. |
step |
number | no | Increment for the number and slider widgets. A hint only, never a validity constraint. > 0 |
"type": "boolean"
Section titled “"type": "boolean"”true / false.
| Key | Type | Required | Notes |
|---|---|---|---|
widget |
"checkbox" |
no | How the field renders. Defaults to checkbox. Only a field a person fills may name a widget. |
"type": "date"
Section titled “"type": "date"”A date; ISO-8601 on the wire.
| Key | Type | Required | Notes |
|---|---|---|---|
widget |
"date" |
no | How the field renders. Defaults to date. Only a field a person fills may name a widget. |
"type": "enum"
Section titled “"type": "enum"”One of a fixed set of choices.
| Key | Type | Required | Notes |
|---|---|---|---|
widget |
"select" | "radio" |
no | How the field renders. Defaults to select. Only a field a person fills may name a widget. |
choices |
array of Choice | yes | The permitted values, in the order they are offered. at least 1 item |
"type": "object"
Section titled “"type": "object"”A record with named fields.
| Key | Type | Required | Notes |
|---|---|---|---|
fields |
array of NestedField | yes | The object’s own named members. Unlike a column name, these are JSON keys from the source payload, so colons, slashes and unicode are all allowed. at least 1 item |
table |
TableView | no | How an object’s fields group into displayed columns. Lives on the object type beside the fields its columns name, so it nests to any depth and covers map<_, object> as well as arrays. |
"type": "array"
Section titled “"type": "array"”A list of items.
| Key | Type | Required | Notes |
|---|---|---|---|
widget |
"checkboxes" |
no | How the field renders. Defaults to checkboxes. Only a field a person fills may name a widget. |
items |
ValueType | yes | The type of every element. An array of enum is how a multi-select is declared. |
"type": "map"
Section titled “"type": "map"”A dictionary of keys → values.
| Key | Type | Required | Notes |
|---|---|---|---|
keys |
ValueType | no | The type of each key. Defaults to text when omitted. |
values |
ValueType | yes | The type of each value. |