Catalog

The catalog defines indexes and metadata columns for searching and listing content. They are defined in a catalog.json file placed in a profile’s directory and are automatically loaded when the profile is installed.

Structure

{
  "indexes": [],
  "metadata": []
}
Field Type Description
indexes array Searchable and sortable columns that can be used in queries.
metadata array Additional columns stored alongside indexes for retrieval in search results.

Index items

Each entry in the indexes array is a column on the catalog database table that enables searching, filtering, and sorting.

Field Type Description
name string Column name (prefixed with _ in the database).
type string Data type: "string", "integer", "path", "uuid", "boolean", "date", "string[]", "uuid[]", "embed", or "text".
attr string The document attribute or method name to index (e.g. "getTitle", "description", "workflow_state").
title:i18n string Optional display label.
description:i18n string Optional description.
group string Optional UI grouping category (e.g. "Metadata", "Dates", "Text").
enabled boolean Whether the index is active and available in queries.
sortable boolean Whether results can be sorted by this index.
operators object Optional map of operator IDs to their definitions (title, description, operation, widget) for building query filters.
vocabulary string Optional vocabulary reference for autocomplete in the UI (e.g. "users", "types").

Metadata items

Each entry in the metadata array is an additional column that is populated when catalog entries are updated, making the value available in search results without looking up the document.

Field Type Description
name string Column name used when retrieving metadata.
type string Data type: "string", "integer", "uuid", "boolean", "date", "json", "string[]", or "text".
attr string The document attribute or method to read the value from.

Operators

An operator defines how an index can be filtered in queries. Each key under operators has:

Field Type Description
title:i18n string Display label.
description:i18n string Help text shown to the user.
operation string Internal operation identifier handled by the query system (e.g. "contains", "equal", "largerThan", "afterToday").
widget string UI widget for input (e.g. "StringWidget", "DateWidget", "MultipleSelectionWidget", "ReferenceWidget").

Example

Place a file like src/profiles/default/catalog.json:

{
  "indexes": [
    {
      "name": "my_field",
      "type": "string",
      "attr": "myField",
      "title:i18n": "My Field",
      "group": "Metadata",
      "enabled": true,
      "sortable": true,
      "operators": {
        "string.is": {
          "title:i18n": "Is",
          "operation": "equal",
          "widget": "StringWidget"
        }
      }
    }
  ],
  "metadata": [
    {
      "name": "my_field",
      "type": "string",
      "attr": "myField"
    }
  ]
}

The file is picked up automatically during seeding — no manual registration is required. New columns are added to the catalog database table alongside the existing ones.


This site uses Just the Docs, a documentation theme for Jekyll.