featherbit UI
    Preparing search index...

    Interface FieldSchema

    Declarative description of a single config field rendered by SchemaForm.

    interface FieldSchema {
        addLabel?: string;
        default?: unknown;
        fields?: FieldSchema[];
        hint?: string;
        item?: {
            legacyDollar?: boolean;
            placeholder?: string;
            template?: "none" | "full" | "env-only";
            type: "number" | "text";
        };
        itemLabel?: string;
        key: string;
        label: string;
        legacyDollar?: boolean;
        options?: (string | FieldOption)[];
        optionsFrom?: "stores";
        placeholder?: string;
        rows?: number;
        shape?: "expr" | "or-of-exprs";
        switchLabel?: string;
        template?: "none" | "full" | "env-only";
        type: FieldType;
    }
    Index
    addLabel?: string

    Label for the "add item" button on list/objects fields.

    default?: unknown

    Initial value when the field is unset in the node config.

    fields?: FieldSchema[]

    Sub-fields of each record for objects fields.

    hint?: string

    Short helper text rendered under the control.

    item?: {
        legacyDollar?: boolean;
        placeholder?: string;
        template?: "none" | "full" | "env-only";
        type: "number" | "text";
    }

    Scalar item control for list fields.

    Type Declaration

    • OptionallegacyDollar?: boolean
    • Optionalplaceholder?: string
    • Optionaltemplate?: "none" | "full" | "env-only"

      See FieldSchema.template; resolved the same way for the item control.

    • type: "number" | "text"
    itemLabel?: string

    Singular noun used to title each objects row.

    key: string

    Property name in the node's config object.

    label: string

    Label shown next to the control.

    legacyDollar?: boolean

    Field is one of the 15 legacy $var/${var} fields (Task 2) — passed through to VarInput's legacyDollar prop so its $-completion keeps working alongside {{path}}. Meaningless (and unused) on 'env-only' fields, since none of the 15 legacy fields are also env-only.

    options?: (string | FieldOption)[]

    Choices for radio/select; plain strings double as value and label.

    optionsFrom?: "stores"

    Source of dynamic options for select fields, resolved at render time from SchemaForm's dynamicOptions prop (e.g. 'stores' = the declared stores: names). Merged AFTER options, so a static empty-choice entry can precede the dynamic list.

    placeholder?: string

    Placeholder text for text-like inputs.

    rows?: number

    Visible rows for textarea fields.

    shape?: "expr" | "or-of-exprs"

    For conditions fields: single expression or an OR-ed list of them.

    switchLabel?: string

    Inline label rendered beside a switch control.

    template?: "none" | "full" | "env-only"

    Which template-suggestion groups this field's control offers, enabling context autocomplete (VarInput) in the first place.

    • 'full' — every suggestion group (request/response/message/env/...). Reserved for fields the Rust plugin genuinely renders through crate::vars::template::Template at request time — set explicitly here, one per field, cross-checked against the plugin's source (see Tasks 2-5's sweep reports for the file:line of each render call).
    • 'env-only' — only the env group, for every other text-like field: secrets/credential material, DSL/schema blobs, regexes, external endpoints, file paths, and — critically — anything not in the sweep above, since those fields are never re-rendered per request and offering full request/response/message suggestions on them would be dishonest (the suggestion would never actually resolve). {{env.NAME}} still applies to these fields at config-load time.
    • 'none' — plain input, no VarInput/autocomplete at all.

    When absent, the default is type-based: 'env-only' for text/textarea (and, for list/objects, their text-typed item/sub-fields) — 'full' is never a default, only an explicit, verified opt-in; radio/select/switch/number fields are structurally 'none' and never get a template override.

    type: FieldType

    Which control to render.