On this page

A data-view resource customizes record presentation for one dataset. It can set the record title, list columns and summaries, and record-form layout. It does not change stored data, validation, matching, or merge behavior.

Select the view through the entity’s view for a root-only selection, or datasetViews for a map keyed by dataset identifier, including nested datasets. When datasetViews is present, it is the complete selection and view is ignored. Each selected view must describe the corresponding dataset.

Without a selected view, records display all dataset columns in dataset order.

Resource structure

This is sample-customer-view from the Aurelia Utilities sample, shortened:

{
  "_id": "sample-customer-view",
  "type": "data-view",
  "description": "Aurelia Utilities - how a residential customer is presented",
  "dataset": "sample-customer",
  "title": "{{fullName}}{{#taxId}} · {{taxId}}{{/taxId}}",
  "list": {
    "columns": [
      {
        "column": "fullName",
        "label": "Customer",
        "widthPercent": 20
      },
      {
        "column": "taxId",
        "label": "Tax ID",
        "widthPercent": 10,
        "format": "MONO"
      },
      {
        "column": "email",
        "label": "Email",
        "widthPercent": 14,
        "truncate": 32
      },
      {
        "column": "city",
        "label": "City",
        "widthPercent": 8
      },
      {
        "column": "province",
        "label": "Province",
        "widthPercent": 8
      },
      {
        "column": "_source",
        "widthPercent": 14,
        "truncate": 32
      },
      {
        "expression": "https://origen.aurelia-utilities.example/{{_id}}",
        "label": "Go to system",
        "widthPercent": 18,
        "format": "LINK"
      },
      {
        "column": "_quality",
        "widthPercent": 8,
        "align": "RIGHT"
      }
    ],
    "summaries": []
  },
  "form": {
    "sections": [
      {
        "label": "Identity",
        "frame": "NONE",
        "width": 6,
        "columns": [
          {
            "column": "fullName",
            "width": 12
          },
          {
            "column": "firstName",
            "width": 6
          },
          {
            "column": "lastName",
            "width": 6
          },
          {
            "column": "taxId",
            "width": 6
          }
        ]
      },
      {
        "label": "Contact",
        "frame": "NONE",
        "width": 6,
        "columns": [
          {
            "column": "email",
            "width": 12
          },
          {
            "column": "phone",
            "width": 6
          }
        ]
      }
    ],
    "render": []
  }
}

The example omits localized labels and the remaining form sections. _source and _quality are supported presentation fields, not ordinary dataset columns. Their labels and rendering belong to Golden; configure placement and width rather than substituting a business field called sourceSystem. _quality in a view resolves the quality metadata and does not imply a top-level writable record member.

Title and column templates

Templates use Mustache. Use {{column}} for a field and {{#column}}…{{/column}} for text that depends on a non-empty field.

{{fullName}}{{#taxId}} · {{taxId}}{{/taxId}}

A record with no tax identifier renders as the name alone, with no trailing separator. Written as plain concatenation it would read “Ana Garcia Munoz ·”.

Literal text stays literal, and an empty or absent field renders nothing. Templates compose text from field values. They do not support arithmetic, comparisons, or counting expressions.

A view whose title comes out blank — every column it names is empty on that record — falls back to the record identifier, when the resulting title contains no usable value. When no title template is configured and the dataset uses COLUMN identity, Golden builds a title from its identity columns. This differs from a configured template that produces an empty result for a particular record.

The same language works in a list column’s expression, as a template over the whole row. Set either column or expression on a list column.

widthPercent on a list column and width on a form column are different scales. The first is a percentage of the table, 1 to 100; the second is a share of the twelve-column form grid. They are not interchangeable.

Test expressions with representative records, including missing values, to verify conditional text and separators.

Configure record lists

Each list.columns entry names a dataset column or provides an expression for a composed display value. It can also override:

  • header label;
  • width from 1 to 100 percent;
  • LEFT, RIGHT, or CENTER alignment;
  • character truncation; and
  • LINK, BADGE, MONO, or TEXT format.

For arrays and nested datasets, list.summaries can render COUNT, TEMPLATE, or LIST. LIST also supports a separator and a maximum displayed item count.

A TEMPLATE summary uses Mustache in the context of each nested item. Reference a field as {{street}}. Legacy {field} definitions are converted when read and exported in the current format.

{ "column": "addresses", "mode": "TEMPLATE", "template": "{{street}}, {{city}}" }

A bare string remains accepted as shorthand for a simple list column. For example, "email" is equivalent to {"column": "email"}. Older title definitions expressed as lists of column keys remain readable; use an expression for new views.

Configure the record form

Form sections and fields use a 12-column layout. Sections can define a label, width, new-row behavior, collapsed state, and ordered fields. Fields can override label, width, row break, and nested-field order.

Array-editor overrides belong in the separate form.render list. Each entry names column and a render mode: DEFAULT, TABLE, TABS, TABS_TOP, or GRID. Choose based on the number and complexity of fields, then test narrow and wide screens used by the intended workflow.

Test without saving

In the resource editor, use Test with representative records before saving. The API equivalent is POST /api/resources/view/resolve, which resolves a draft definition without storing it. The normal resource-save operation is still required to persist the view, and the entity must select it before record responses use it.

Table record responses include the resolved view when the owning entity selects one, so API clients can apply the same presentation metadata.

Golden 3.0.0 · Published 2026-10-04