Skip to main content

Inputs

The input catalogs power the Template input builder UI. One endpoint lists the input editor component drivers (the building blocks an input definition references), and the other lists the suggested input presets bucketed by value type. Both are read-only discovery endpoints over static, per-deployment catalogs, so neither accepts a payload, params, or query string.

These catalogs complement the per-Template input surface. Reading, creating, and editing the inputs of a specific Template lives on the Template inputs page (/api/templates/{id}/inputs), which references the component id values returned here.

Both routes require only an authenticated session. There is no permission check, because the catalogs expose no tenant data, only the registered driver shapes.

GET /api/input-editors

List the registered input editor component drivers.

Authentication: Required (no permission needed)

Response:

A HAL collection of the registered inf:input driver manager entries, embedded under _embedded["inf:input-driver"] (not a top-level items array). Rows appear in a fixed registration order, and each row serializes to just id and name. The id (for example mdSelect, mdDatepicker, infMonaco) is the component an input definition references via its input block. The name is an untranslated i18n key (for example input:date_range); the client resolves it to the active locale.

List input editor componentsGET /api/input-editors
GET /api/input-editors is a HAL collection of the registered input EDITOR component drivers (the `inf:input` driver manager). Rows are embedded under inf:input-driver in a fixed registration order, each serializing to { id, name } where `name` is an untranslated i18n key (e.g. input:date_range). The id (e.g. mdSelect, mdDatepicker, infMonaco) is the component an input definition references via its `input` block. No permission needed beyond an authenticated session.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/input-editors"
}
},
"start": 0,
"count": 13,
"total": 13,
"_embedded": {
"inf:input-driver": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/input-editors/dateRangePicker"
}
},
"id": "dateRangePicker",
"name": "input:date_range"
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/input-editors/mdMultiInput"
}
},
"id": "mdMultiInput",
"name": "input:input_box"
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/input-editors/mdRadioGroup"
}
},
"id": "mdRadioGroup",
"name": "input:radio_buttons"
},
"… 10 more items (13 total) — omitted from docs"
]
}
}
Captured from the API examples test suite; ids and timestamps are normalized.
Names are i18n keys

The name of each driver is a message key, not a display string, and is not translated server-side. Resolve it client-side against the active locale before showing it in the builder.


GET /api/input-templates

List the suggested input presets bucketed by value type.

Authentication: Required (no permission needed)

Response:

A detective-discovery HAL collection whose rows appear under a top-level items array (each row carries only a _links.self). It returns five rows, one per value type, in a fixed order: object, string, numeric, date, boolean. Each row's value is the array of suggested input presets for that type. Each preset is shaped like the example below, where the input block maps a component id (from GET /api/input-editors) to that component's default options.

{
"key": "input:select_dropdown",
"group": "string",
"input": {
"mdSelect": { "options": [] }
}
}
List input presets by value typeGET /api/input-templates
GET /api/input-templates is a detective-discovery HAL collection (rows under a top-level `items` array). It returns five rows, one per value type in a fixed order (object, string, numeric, date, boolean); each row’s `value` is the array of suggested input presets for that type, each preset being { key, group, input: { <component>: {...defaults} } }. The per-row `detective`/`id` carry a per-run uuid that the capture sanitizer canonicalizes. No permission needed beyond an authenticated session.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/input-templates"
}
},
"items": [
{
"detective": "00000000-0000-4000-8000-000000000001",
"id": "00000000-0000-4000-8000-000000000001:0",
"value": [
{
"key": "input:json_code",
"input": {
"infMonaco": {
"contentType": "application/json"
}
},
"group": "object"
},
{
"key": "input:code_chooser",
"input": {
"infCodeValuesChooser": {
"options": []
}
},
"group": "object"
}
]
},
{
"detective": "00000000-0000-4000-8000-000000000001",
"id": "00000000-0000-4000-8000-000000000001:1",
"value": [
{
"key": "input:input_box",
"input": {
"mdMultiInput": {
"type": "text",
"onlySingle": true
}
},
"group": "string"
},
{
"key": "input:select_dropdown",
"input": {
"mdSelect": {
"options": []
}
},
"group": "string"
},
{
"key": "input:radio_buttons",
"input": {
"mdRadioGroup": {
"options": []
}
},
"group": "string"
},
"… 3 more items (6 total) — omitted from docs"
]
},
{
"detective": "00000000-0000-4000-8000-000000000001",
"id": "00000000-0000-4000-8000-000000000001:2",
"value": [
{
"key": "input:input_box",
"input": {
"mdMultiInput": {
"type": "number",
"onlySingle": true
}
},
"group": "numeric"
},
{
"key": "input:number_slider",
"input": {
"mdSlider": {}
},
"group": "numeric"
},
{
"key": "input:select_dropdown",
"input": {
"mdSelect": {
"options": []
}
},
"group": "numeric"
},
"… 2 more items (5 total) — omitted from docs"
]
},
"… 2 more items (5 total) — omitted from docs"
],
"start": 0,
"count": 5,
"total": 5
}
Captured from the API examples test suite; ids and timestamps are normalized.
Pairing the two catalogs

A preset's input block names the same component id you get from GET /api/input-editors. Use the editors catalog for the full set of available components, and this catalog for the type-appropriate starting points the builder offers.

Per-row identifiers are synthetic

The inputs-by-type driver declares no id, so each row's detective and the <uuid>:N prefix of its id are assigned a per-run UUID. Treat those values as opaque and positional, not as stable identifiers to persist.