Content Type Fields

Document and FieldGroup types are comprised of a number of different types of fields.

All field types have the following properties in common:

Property NameProperty TypeRequiredDescriptionExamples
nameStringyesIdentifying name of this field within its content typetitle, mydate
typeStringyesThe type of the field. Valid values: String, Boolean, Integer, Number, Text, Date, Html, RichText, SelectableString, Link, EmbeddedResource, Taxonomy, FieldGroup, SelectableFieldGroup, OpenUiExtensionHtml, Number
requiredBooleannoA field can be made required by setting this property to true. Authors can't save documents if they haven't entered a value in a required field. Defauts to falsetrue
multipleBooleannoA field can be made multi-valued by setting this property to true. This adds plus and minus icons to the field so authors can add or remove values. Defauts to falsefalse
presentationMapyesPresentation properties of the field below
validationsMapnoValidations of the field. Provides configuration for the field. See per field type below
defaultValueArraynoDefault value of this field. See per field type

The presentation map also contains some common properties for all types of fields:

Property NameProperty TypeRequiredDescriptionExamples
captionStringnoThe caption of a field is the label that is displayed directly above the field in the editing template. Authors will know a field by its caption. A caption is single-line plain text and may contain spaces and special charactersTitle, My Date
hintStringnoOptionally a hint to authors can be added to a field. The hint is displayed as a question mark icon with a mouseover popupIn this field, you need to fill in the title
layoutColumnIntegernolayoutColumn index used for positioning the field. Starts from 1. Defaults to 12

The available field types are:

String

A String field is used for single or multi-line plain text content, determined by the value in presentation/displayType.

A single line input is rendered for displayType 'Simple':

When the displayType is 'Text', a multi-line input is provided:

Presentation properties

Property NameProperty TypeRequiredDescriptionExamples
displayTypeStringyesDisplay type of the field. Valid values: Simple, TextSimple

Validation properties

Property NameProperty TypeRequiredDescriptionExamples
maxLengthIntegernomaxLength determines the maximum number of characters allowed in this string field. Expects an integer value. Only use this property when displayType is 'Simple'50
maxRowIntegernomaxRow determines the number of rows shown for the text area this field renders. Expects an integer value. Only use this property when displayType is 'Simple'4

Default value

The default value is an array of String

An example of String fields can be seen below:

{
  "name": "string",
  "required": true,
  "multiple": true,
  "type": "String",
  "defaultValue": [
    "Blogtitle1",
    "Blogtitle2"
  ],
  "validations": {
    "maxLength": 10
  },
  "presentation": {
    "caption": "Title",
    "hint": "Hint for string field",
    "layoutColumn": 1,
    "displayType": "Simple"
  }
}
{
  "name": "text",
  "required": true,
  "multiple": false,
  "type": "String",
  "defaultValue": [
    "Sample value text field"
  ],
  "validations": {
    "maxRow": 10
  },
  "presentation": {
    "caption": "Text Field",
    "hint": "Hint for text field",
    "layoutColumn": 2,
    "displayType": "Text"
  }
}

Date

A Date field includes date and optionally time, depending on the property presentation/timeSelectable. A date value can be entered in a text box or through the provided calendar widget. A time value can be entered through text boxes for hours and minutes.

Presentation properties

Property NameProperty TypeRequiredDescriptionExamples
timeSelectableBooleannoDefines if the time is also selectable for Date field. Defaults to falsetrue

Default value

The default value is an array of String, each of which is a UTC date.

An example of Date fields can be seen below:

{
  "name": "date",
  "required": true,
  "type": "Date",
  "defaultValue": [
    "2007-12-03T00:00:00.00Z"
  ],
  "presentation": {
    "caption": "Date Field",
    "hint": "Hint for date field",
    "layoutColumn": 2,
    "timeSelectable": false
  }
}
{
  "name": "dateWithTime",
  "required": true,
  "type": "Date",
  "defaultValue": [
    "2007-12-03T10:15:30.00Z"
  ],
  "presentation": {
    "caption": "Date Field",
    "hint": "Hint for date field with time",
    "layoutColumn": 2,
    "timeSelectable": true
  }
}

Boolean

A Boolean field is displayed either as a single checkbox or as a radio button group widget, depending on property presentation/displayType. As a checkbox:

As a radio group. The labels for the true and false options can be read from a resource bundle document.

Presentation properties

Property NameProperty TypeRequiredDescriptionExamples
displayTypeStringyesDisplay type of the field. Valid values: Checkbox, RadioGroupCheckbox
orientationStringnoOrientation type of the field. Valid values: horizontal, vertical. Defaults to 'horizontal'. Only applicable when displayType is RadiogroupVertical

Validation properties

Property NameProperty TypeRequiredDescriptionExamples
inResourceBundleStringnoid of a resource bundle that is used to fetch values from. In the document type editor, this corresponds to the 'source' property. From the value list, two keys are read, 'true' and 'false'.


Before setting up this field, the authors have to create a document of the type resource bundle, which will provide the options to be selected.
boolean.resource.bundle
inValuesArray of Stringnolabels of the field. Expects labels of true and false values respectively. In the document type editor, this corresponds to the 'trueLabel' and 'falseLabel' properties["Open", "Closed"]

Default value

The default value is an array of Boolean

An example of Boolean fields can be seen below:

{
  "name": "booleanChekbox",
  "required": true,
  "type": "Boolean",
  "defaultValue": [
    true
  ],
  "presentation": {
    "caption": "Boolean Field",
    "hint": "Hint for boolean field",
    "layoutColumn": 1,
    "displayType": "Checkbox"
  }
}
{
  "name": "radiogroupOnBoolean",
  "required": true,
  "type": "Boolean",
  "defaultValue": [
    "false"
  ],
  "validations": {
    "inResourceBundle": "boolean.resource.bundle"
  },
  "presentation": {
    "caption": "Radiogroup field",
    "hint": "Hint for radiogroup field on boolean",
    "layoutColumn": 1,
    "displayType": "RadioGroup",
    "orientation": "vertical"
  }
}
{
  "name": "staticRadiogroupOnBoolean",
  "required": false,
  "type": "Boolean",
  "defaultValue": [
    "false"
  ],
  "validations": {
    "inValues": [
      "Open",
      "Closed"
    ]
  },
  "presentation": {
    "caption": "Radiogroup field",
    "hint": "Hint for static radiogroup field on boolean",
    "layoutColumn": 1,
    "displayType": "RadioGroup"
  }
}

Integer

An Integer field is displayed as shown below:

Default value

The default value is an array of Integer numbers

An example of an Integer field can be seen below:

{
  "name": "integer",
  "required": true,
  "type": "Integer",
  "defaultValue": [
    100
  ],
  "presentation": {
    "caption": "Integer Field",
    "hint": "Hint for integer field",
    "layoutColumn": 2
  }
}

Number

A Number field is used for decimal values. Its default value is 0.0.

Default value

The default value is an array of Double numbers

An example of a Number field can be seen below:

{
  "name": "number",
  "required": true,
  "multiple": true,
  "type": "Number",
  "defaultValue": [
    100.34,
    2.2
  ],
  "presentation": {
    "caption": "Number Field",
    "hint": "Hint for number field",
    "layoutColumn": 2
  }
}

Html

An Html field is used for formatted text content. It is stored as HTML markup.

Presentation properties

Property NameProperty TypeRequiredDescriptionExamples
ckEditorAppendedJsonStringnoJSON configuration object for CKEditor. In the document type editor, this corresponds to the 'ckeditor.config.appended.json' property. See HTML fields configuration{\n \"keystrokes\":[[88,\"showblocks\"]],\n \"plugins\":\"colorbutton\"\n}
ckEditorOverlayedJsonStringnoJSON configuration object for CKEditor. In the document type editor, this corresponds to the 'ckeditor.config.overlayed.json' property. See [{\n \"codemirror\": {\n \"autoFormatOnStart\": false\n },\n \"ignoreEmptyParagraph\": true\n}

Default value

The default value is an array of String (containing html markup)

The provided markup is cleaned from any nonvalid html elements, a process identical to then submitting html content via the document editor. This process is explained here.

An example of an Html field can be seen below:

{
  "name": "html",
  "required": true,
  "type": "Html",
  "defaultValue": [
    "<p>Sample content html field</p>"
  ],
  "presentation": {
    "caption": "Html Field",
    "hint": "Hint for html field",
    "layoutColumn": 2,
    "ckEditorAppendedJson": "{\n  \"keystrokes\":[[88,\"showblocks\"]],\n  \"plugins\":\"colorbutton\"\n}",
    "ckEditorOverlayedJson": "{\n  \"codemirror\": {\n    \"autoFormatOnStart\": false\n  },\n  \"ignoreEmptyParagraph\": true\n}"
  }
}

Rich Text

A Rich Text Editor field is used to store fully featured rich text content. It is stored as HTML markup within the document. The Rich Text Editor provides authors with the freedom to format text and include tables, images, links, etc. The delivery tier will include references to other content items (such as images and links to other documents).

Presentation properties

Property NameProperty TypeRequiredDescriptionExamples
ckEditorAppendedJsonStringnoJSON configuration object for CKEditor. In the document type editor, this corresponds to the 'ckeditor.config.appended.json' property. See html fields configuration{\n \"keystrokes\":[[88,\"showblocks\"]],\n \"plugins\":\"colorbutton\"\n}
ckEditorOverlayedJsonStringnoJSON configuration object for CKEditor. In the document type editor, this corresponds to the 'ckeditor.config.overlayed.json' property. See html fields configuration{\n  "codemirror": {\n    "autoFormatOnStart": false\n  },\n  "ignoreEmptyParagraph": true\n}
imagepickerBasePathStringnoPath of the node to open in the picker by default if no 'last visited' node is available. Use an empty string to disable this feature. In the document type editor, this corresponds to the 'imagepicker.base.uuid' property. The API takes care of converting from path to uuid and vice versa./content/gallery/brxsaas/images
imagepickerTypeStringnoThe type of the picker to use. Valid values: documents, images, assets, folders, documents-only, documents-folders-only. Defaults to 'images'. In the document type editor, this corresponds to the 'imagepicker.cluster.name' property. The API takes care of managing the 'cms-pickers' prefix.images
imagepickerNodetypesArray of StringnoOne or more JCR node types (comma separated) specifying the content types that can be selected. By default, all types are selectable. In the document type editor, this corresponds to the 'imagepicker.nodetypes' property.["folder", "banner"]
imagepickerLastVisitedEnabledBooleannoWhether to store the last visited node. Defaults to true. In the document type editor, this corresponds to the 'imagepicker.last.visited.enabled' property.true
imagepickerLastVisitedGroupKeyStringnoKey to store the last visited node in the link picker dialog under. Use a unique value to remember the last visited node separately from other CKEditor link picker dialogs. Default: ckeditor-imagepicker. In the document type editor, this corresponds to the 'imagepicker.last.visited.key' property.imagepicker
imagepickerLastVisitedNodetypesArray of StringnoThe JCR node type(s) allowed to be stored as last visited node. Default: hippostd:gallery. In the document type editor, this corresponds to the 'imagepicker.last.visited.nodetypes' property.["gallery", "banner"]
imagepickerPreferredImageVariantStringnoThe image variant to select by default in the variant combo box of the image picker.Default: hippogallery:original. In the document type editor, this corresponds to the 'imagepicker.preferred.image.variant' property.original
linkpickerBasePathStringnoPath of the node to open in the picker by default if no 'last visited' node is available. Use an empty string to disable this feature. In the document type editor, this corresponds to the 'linkpicker.base.uuid' property. The API takes care of converting from path to uuid and vice versa./content/gallery/brxsaas/myimages
linkpickerTypeStirngnoThe type of the picker to use. Valid values: documents, images, assets, folders, documents-only, documents-folders-only. Defaults to 'documents'. In the document type editor, this corresponds to the 'linkpicker.cluster.name' property. The API takes care of managing the 'cms-pickers' prefix.documents
linkpickerNodetypesArray of StringnoOne or more JCR node types specifying the content types that can be selected. By default, all types are selectable. In the document type editor, this corresponds to the 'linkpicker.nodetypes' property.["folder", "banner"]
linkpickerLastVisitedEnabledBooleannoWhether to store the last visited node. Defaults to true. In the document type editor, this corresponds to the 'linkpicker.last.visited.enabled' property.true
linkpickerLastVisitedGroupKeyStringnoKey to store the last visited node in the link picker dialog under. Use a unique value to remember the last visited node separately from other CKEditor link picker dialogs. Default: ckeditor-documentpicker. In the document type editor, this corresponds to the 'linkpicker.last.visited.key' property.documentpicker
linkpickerLastVisitedNodetypesArray of StringnoThe JCR node type(s) allowed to be stored as last visited node. Default: hippostd:folder. In the document type editor, this corresponds to the 'linkpicker.last.visited.nodetypes' property.["folder"]
linkPickerLanguageContextAwareBooleannoWhether the starting folder of the documentpicker is the folder of the language of the document. Defaults to true. In the document type editor, this corresponds to the 'linkpicker.language.context.aware' property.true
linkPickerOpenInNewWindowEnabledBooleannoWhether to show to 'open in new window' checkbox in the link picker dialog. Defaults to true. In the document type editor, this corresponds to the 'linkpicker.open.in.new.window.enabled' property.false
includeImageVariantsArray of StringnoThe (comma separated) JCR node type(s) of image variants to be included in the 'Size' dropdown of the image picker dialog. If empty all image variants will be included. In the document type editor, this corresponds to the 'included.image.variants' property.original, thumbnail
excludeImageVariantsArray of StringnoThe (comma separated) JCR node type(s) to be excluded from the 'Size' dropdown of the image picker dialog. In the document type editor, this corresponds to the 'excluded.image.variants' property.banner, small

Default value

The default value is an array of String (containing html markup)

The provided markup is cleaned from any nonvalid html elements, a process identical to when submitting html content via the document editor. This process is explained here.

Internal links in this markup are represented using the attribute data link. The attribute is supported for <a>; and <img> elements; upon processing, the data-link attribute is transformed into an href or src attribute respectfully.

For element , the format of the attribute is: {path_to_document}[#fragment], where:

  • path_to_document: an absolute path to a document, image or asset
  • fragment: optional, an anchor inside the document

Example: See details

For element , the format is {path_to_document}?{image_type}, where: 

path_to_document: an absolute path to an image
image_type: mandatory, the image variant to use. Currently, the valid values are: largesquare, banner, mediumsquare, smallsquare, small, thumbnail, large, original. The provided values are also validated against the field's configuration, specifically the presentation properties includeImageVariants and excludeImageVariants.
Example: 

  • path_to_document: an absolute path to an image
  • image_type: mandatory, the image variant to use. Currently, the valid values are: largesquare, banner, mediumsquare, smallsquare, small, thumbnail, large, original. The provided values are also validated against the field's configuration, specifically the presentation properties includeImageVariants and excludeImageVariants.

Example: 

An example of a RichText field can be seen below:

{
  "name": "richText",
  "required": false,
  "type": "RichText",
  "defaultValue": [
    "<p>Sample content rich text field</p>"
  ],
  "presentation": {
    "caption": "Content",
    "hint": "Hint for rich text field",
    "layoutColumn": 1,
    "imagepickerType": "images",
    "imagepickerNodetypes": [
      "folder",
      "banner"
    ],
    "imagepickerLastVisitedEnabled": true,
    "imagepickerLastVisitedGroupKey": "ckeditor-imagepicker",
    "imagepickerLastVisitedNodetypes": [
      "gallery",
      "banner"
    ],
    "imagepickerPreferredImageVariant": "original",
    "imagepickerBasePath": "/content/gallery/brxsaas/images",
    "linkpickerType": "documents",
    "linkpickerNodetypes": [
      "folder",
      "banner"
    ],
    "linkpickerLastVisitedEnabled": true,
    "linkpickerLastVisitedGroupKey": "ckeditor-linkpicker",
    "linkpickerLastVisitedNodetypes": [
      "folder"
    ],
    "linkPickerLanguageContextAware": true,
    "linkPickerOpenInNewWindowEnabled": true
  }
}

SelectableString

A  SelectableString is displayed in many different ways, depending on the property presentation/displayType.

As a static dropdown, a single value dropdown widget populated from a static value list specified as comma-separated values in the field properties:

As single value dropdown widget populated from a resource bundle document:

As a single value radio button group widget populated from a resource bundle:

As a Multi Select, that lets authors select multiple elements from a list of possible options. This display type comes in different flavors as well, select list, pallette and checkboxes:

Presentation properties

Property NameProperty TypeRequiredDescriptionExamples
displayTypeStringyesDisplay type of the field. Valid values: RadioGroup, Dropdown, MultiSelectDropdown
sortOrderStringsortOrder type of the field. Valid values: ascending, descending. Defaults to 'ascending'. Not applicable when displayType is MultiSelectascending
sortByStringsortBy type of the field. Valid values: key, label. Defaults to 'label'. Not applicable when displayType is MultiSelectkey
orientationStringnoOrientation type of the field. Valid values: horizontal, vertical. Defaults to 'horizontal'. Only applicable when displayType is RadiogroupVertical
showDefaultBooleannoDefines whether the default value 'Choose One' should be shown.  Only applicable when displayType is Dropdownfalse
multiSelectTypeStringnoThis property determines the user interface of the field. Valid values are: selectlist, checkboxes, palette. Only applicable when displayType is MultiSelectpalette
maxRowWithoutScrollbarIntegernoin case of using the selectlist or palette representations, this property allows to set the maximum number of elements shown (if there are more elements, a scrollbar will appear. In the document type editor, this corresponds to the 'selectlist.maxrows' and 'palette.maxrows' properties. Only applicable when displayType is MultiSelect8
multiSelectAllowOrderBooleannoIn case of using the palette representation, if set to 'true', it will be possible to manually order the elements on the 'selected' list. In the document type editor, this corresponds to the 'palette.alloworder' property. Only applicable when displayType is MultiSelectfalse

Validation properties 

Property NameProperty TypeRequiredDescriptionExamples
inResourceBundleStringnoId of a resource bundle that is used to fetch values from. In the document type editor, this corresponds to the 'source' property.

Before setting up this field, the authors have to create a document of the type resource bundle, which will provide the options to be selected.
brsm.widget.types
inValuesArray of KeyValuenoExpects an array of key-label values. Not applicable for displayType RadioGroup or MultiSelect. In the document type editor, this corresponds to the 'selectable.options' property.`[

      {
"key": "01",
"label": "New"
},
{
"key": "02",
"label": "Open"
},
{
"key": "03",
"label": "Closed"
}
]` |

Default value

The default value is an array of String

An example of such fields can be seen below:

{
  "name": "dropdownWithResourceBundle",
  "required": true,
  "type": "SelectableString",
  "defaultValue": [
    "key1"
  ],
  "validations": {
    "inResourceBundle": "brsm.example.bundle"
  },
  "presentation": {
    "caption": "Dynamic dropdown field",
    "hint": "Hint for dynamic dropdown field",
    "layoutColumn": 1,
    "displayType": "Dropdown",
    "sortOrder": "ascending",
    "sortBy": "key",
    "showDefault": true
  }
}
{
  "name": "dropdownWithStaticValues",
  "required": true,
  "type": "SelectableString",
  "defaultValue": [
    "01"
  ],
  "validations": {
    "inValues": [
      {
        "key": "01",
        "label": "New"
      },
      {
        "key": "02",
        "label": "Open"
      },
      {
        "key": "03",
        "label": "Closed"
      }
    ]
  },
  "presentation": {
    "caption": "Static dropdown Field",
    "hint": "Hint for dropdown field",
    "layoutColumn": 1,
    "displayType": "Dropdown"
  }
}
{
  "name": "radiogroup",
  "required": true,
  "type": "SelectableString",
  "validations": {
    "inResourceBundle": "brsm.example.bundle"
  },
  "presentation": {
    "caption": "Radiogroup field",
    "hint": "Hint for radio group field",
    "layoutColumn": 1,
    "displayType": "RadioGroup",
    "orientation": "horizontal"
  }
}
{
  "name": "multiselectfieldWithResourceBundle",
  "required": true,
  "multiple": true,
  "type": "SelectableString",
  "defaultValue": [
    "key1",
    "key2"
  ],
  "validations": {
    "inResourceBundle": "brsm.example.bundle"
  },
  "presentation": {
    "caption": "Multiselect field",
    "hint": "Hint for mmultiselect field with resource bundle",
    "layoutColumn": 1,
    "displayType": "MultiSelect",
    "multiSelectType": "selectlist",
    "maxRowWithoutScrollbar": 2,
    "multiSelectAllowOrder": true
  }
}

Link

A Link field with displayType AnyLink, is used to create an internal link to a different content item (such as a document or asset) in the repository. The delivery tier will resolve the reference and translate it to a website URL on-the-fly. If a brX user tries to delete the referenced content item they will see a warning that it is being referred to and deleting the item will cause a broken link in the referring document.

A Link field with a displayType ImageLink is used to include an image from the gallery in the document. 

Presentation properties

Property NameProperty TypeRequiredDescriptionExamples
displayTypeStringyesDisplay type of the field. Valid values: AnyLink, ImageLinkAnyLink
lookupFolderTypesArray of StringnoDocument types allowed for selection. In the document type editor, this corresponds to the 'nodetypes' propertyfolder, banners
lastVisitedKeyStringnoIf specified, the last visited folder is stored separately for this key. This allows managing multiple 'last visited folders', for example, one for each document type. If not specified, the last visited folder is 'shared' with all other link fields that have not specified a lastVisitedKey.

When displayType is ImageLink, this property defaults to 'gallerypicker-imagelink'.

In the document type editor, this corresponds to the 'last.visited.key' property
mykey
lastVisitedEnabledBooleannoEnables to remember and open the last opened folder for the session in the picker dialog. True by default. In the document type editor, this corresponds to the 'last.visited.enabled' propertyfalse
lookupFolderPathStringnoThe path of the default folder to show when the Link Picker dialog opens. In the document type editor, this corresponds to the 'base.path' property.

Applicable only when displayType is AnyLink
/content/documents/brxsaas/banners
lastVisitedNodetypesArray of StringnoBy default, only hippostd:folder type nodes are regarded as 'last visited folders' mentioned above. If you have any custom node types representing folder other than hippostd:folder, then you can specify other node types.

In the document type editor, this corresponds to the 'last.visited.nodetypes' property. 

Applicable only when displayType is AnyLink
myfolder, myfoldertwo
languageContextAwareBooleannoIf true the Link Picker dialog by default opens the root content folder for the current document's language. True by default, however, if lastVisitedEnabled is set, it takes precedence so has to be set to false.

In the document type editor, this corresponds to the 'language.context.aware' property.

Applicable only when displayType is AnyLink
true
pickerTypeStringnoThe type of the picker to use. Valid values: documents, images, assets, folders, documents-only, documents-folders-only. Defaults to 'documents'.

In the document type editor, this corresponds to the 'cluster.name' property. The API takes care of managing the 'cms-pickers' prefix.

Applicable only when displayType is AnyLink
documents
uploadEnabledBooleannoWhhether the user is allowed to upload new files from within the picker dialog, defaults to true

Applicable only when displayType is ImageLink
true

Default value

The default value is an array of String

An example of Link fields can be seen below:

{
  "name": "link",
  "required": false,
  "type": "Link",
  "defaultValue": [
    "/content/documents/brxsaas/pages/about"
  ],
  "presentation": {
    "caption": "Link",
    "hint": "Hint for link field",
    "layoutColumn": 2,
    "displayType": "AnyLink",
    "lookupFolderPath": "/content/documents/brxsaas/banners",
    "lookupFolderTypes": [
      "folder"
    ],
    "lastVisitedNodetypes": [
      "folder"
    ],
    "lastVisitedEnabled": true,
    "languageContextAware": true,
    "pickerType": "documents"
  }
}
{
  "name": "imageLink",
  "required": false,
  "type": "Link",
  "defaultValue": [
    "/"
  ],
  "presentation": {
    "caption": "Image",
    "hint": "Hint for image link field",
    "layoutColumn": 1,
    "displayType": "ImageLink",
    "lastVisitedKey": "gallerypicker-imagelink",
    "lastVisitedEnabled": true,
    "uploadEnabled": true
  }
}

EmbeddedResource

A Resource field is used to embed a file (e.g. an image or a PDF document) in a document. The file is stored within the document and can't be reused by other documents.

Default value

The default value is an Array of objects, with following properties:

Property NameProperty TypeRequiredDescriptionExamples
filenameStringyesThe name of the file that is used as default valuetestname
binarydataStringyesThe binary data of the file that is used as default value. This data has to be encoded using base64/9j/4AAQSkZJRgABAQAAFAAUAAD/...
mimeTypeStringyesThe mimeType of the file to be uploadedapplication/pdf

An example of an EmbeddedResource field can be seen below:

{
  "name": "resource",
  "required": true,
  "type": "EmbeddedResource",
  "defaultValue": [
    {
      "filename": "hippo:resource",
      "binarydata": "/9j/4AAQSkZJRgABAQAAFAAUAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAAAUAAAAAQAAABQAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAAigAwAEAAAAAQAAAAUAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/AABEIAAUACAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/3QAEAAH/2gAMAwEAAhEDEQA/APrD4kfAXwl46KapdRwm7uHw0l9b/bDHkjPlFmDRjAxtB289OueI/wCGPPB3/P3p3/gmT/45X0Hdf8eVr/11FNrCtlmGrTc5J38pSX4JpG1PGVYxS0frGLf3tNn/2Q==",
      "mimeType": "application/json"
    }
  ],
  "presentation": {
    "caption": "Resource Field",
    "hint": "Hint for resource field",
    "layoutColumn": 2
  }
}

Taxonomy

Taxonomy documents represent a taxonomy hierarchy composed of different levels of categories. In each level of the category tree, there might be several 'sibling' categories.

Using a Taxonomy field in a document type, developers can specify a taxonomy, so later, when authors edit a document of that type, they will be able to pick categories from that taxonomy.

Validation properties

Property NameProperty TypeRequiredDescriptionExamples
inTaxonomyStringyesThe name of the taxonomy document that will be used. Expects a string value. In the document type editor, this corresponds to the 'taxonomy.name' property.

Before setting up this field, the authors have to create a taxonomy with this name, which will provide the options to be selected.
testTaxonomy

Default value

The default value is an array of String, corresponding to keys in the taxonomy

An example of a Taxonomy field can be seen below:

{
  "name": "taxonomyField",
  "required": true,
  "multiple": true,
  "type": "Taxonomy",
  "defaultValue": [
    "category1"
  ],
  "validations": {
    "inTaxonomy": "testTaxonomy"
  },
  "presentation": {
    "caption": "Taxonomy Field",
    "hint": "Hint for Taxonomy field",
    "layoutColumn": 2
  }
}

Open UI String

An Open UI String field uses the document field extension point to display a custom field type.

🚧

Limitation:

The use of OpenUI extensions currently requires additional configuration that can only be performed by Bloomreach. Contact Bloomreach Support if you are interested in using this feature.

Presentation properties

Property NameProperty TypeRequiredDescriptionExamples
extensionTypeStringyesThe name of the extension that will be used. In the document type editor, this corresponds to the 'ui.extension' propertymyextension

Default value

The default value is an array of String

An example of an Open UI field can be seen below:

{
  "name": "openuiField",
  "required": true,
  "multiple": true,
  "type": "OpenUiExtension",
  "presentation": {
    "caption": "openui Field",
    "hint": "Hint for OpenUi field",
    "layoutColumn": 2,
    "extensionType": "commerceProductPicker"
  }
}

FieldGroup

The FieldGroup field type provides content authors with the ability to add one pre-configured fieldgroup type to a document. All the fields that the fieldgroup type specifies become fields of the enclosing document, visually grouped together.

This field uses the top level property fieldGroupType to specify the name of the FieldGroup type.

Property NameProperty TypeRequiredDescriptionExamples
fieldGroupTypeStringyesThe name of the fieldgroup type that this field will use.

Before setting up this field, developers have to create the FieldGroup types
MyFieldGroupType

Default value

The default value is an array of FieldValues, as needed for specified FieldGroup type

An example of FieldGroup fields can be seen below:

{
  "name": "aFieldGroupField",
  "type": "FieldGroup",
  "required": false,
  "multiple": false,
  "fieldGroupType": "aFieldGroupType",
  "presentation": {
    "caption": "A FieldGroup field",
    "hint": "Hint for FieldGroup field",
    "layoutColumn": 1
  },
  "defaultValue": [
    {
      "fields": {
        "title": [
          "A default title"
        ],
        "calendardate": [
          "2021-10-06T22:00:00Z"
        ]
      }
    }
  ]
}
{
  "name": "aFieldGroupWithFieldGroupField",
  "type": "FieldGroup",
  "required": false,
  "multiple": false,
  "fieldGroupType": "aFieldGroupWithFieldGroupType",
  "presentation": {
    "caption": "A FieldGroupWithFieldGroup field",
    "hint": "Hint for FieldGroupWithFieldGroup field",
    "layoutColumn": 1
  },
  "defaultValue": [
    {
      "fields": {
        "aFieldGroupField": [
          {
            "fields": {
              "title": [
                "A different default title"
              ],
              "calendardate": [
                "2022-02-08T23:00:00Z"
              ]
            }
          }
        ],
        "title": [
          "Top level title"
        ]
      }
    }
  ]
}

The examples above make use of the following two FieldGroup types:

{
  "name": "aFieldGroupType",
  "type": "FieldGroup",
  "presentation": {
    "layout": "one-column"
  },
  "fields": [
    {
      "name": "title",
      "type": "String",
      "required": false,
      "multiple": false,
      "presentation": {
        "caption": "Title",
        "hint": "",
        "layoutColumn": 1,
        "displayType": "Simple"
      },
      "validations": {
        "maxLength": null
      },
      "defaultValue": [
        "A default title"
      ]
    },
    {
      "name": "calendardate",
      "type": "Date",
      "required": false,
      "multiple": false,
      "presentation": {
        "caption": "Calendar Date",
        "hint": "",
        "layoutColumn": 1,
        "timeSelectable": false
      },
      "defaultValue": [
        "2021-10-06T22:00:00Z"
      ]
    }
  ]
}
{
  "name": "aFieldGroupWithFieldGroupType",
  "type": "FieldGroup",
  "presentation": {
    "layout": "one-column"
  },
  "fields": [
    {
      "name": "title",
      "type": "String",
      "required": false,
      "multiple": false,
      "presentation": {
        "caption": "Title",
        "hint": "",
        "layoutColumn": 1,
        "displayType": "Simple"
      },
      "validations": {
        "maxLength": null
      },
      "defaultValue": [
        "Top level title"
      ]
    },
    {
      "name": "aFieldGroupField",
      "type": "FieldGroup",
      "required": false,
      "multiple": false,
      "presentation": {
        "caption": "A FieldGroup field",
        "hint": "",
        "layoutColumn": 1
      },
      "defaultValue": [
        {
          "fields": {
            "title": [
              "A different default title"
            ],
            "calendardate": [
              "2022-02-08T23:00:00Z"
            ]
          }
        }
      ],
      "fieldGroupType": "aFieldGroupType"
    }
  ]
}

Selectable FieldGroup

The Selectable FieldGroup field type provides content authors with the ability to add pre-configured FieldGroup types to a document. This allows for a more flexible document type in which authors have the freedom to choose which fieldgroup(s) to use.

This field uses the top level property fieldGroupTypes to specify the names of the allowed FieldGroup types.

Property NameProperty TypeRequiredDescriptionExamples
fieldGroupTypesArray of StringyesAn array of fieldgroup types that will be enabed in this group of fieldgroups. In the document type editor, this corresponds to the 'compoundList' property.

Before setting up this field, developers have to create the FieldGroup types.

The field types 'Rich Text', 'Link', and 'EmbeddedResource' can also be set in this property with the field type names like 'richtext' (for a Rich Text field), 'anylink' (for a Link field with AnyLink display type), 'imagelink' (for a Link with imageLink display type) and 'embeddedresource' (for an EmbeddedResource field). If you have a FieldGroup type with one of these reserved names for example 'richtext', then this custom FieldGroup type can be set as 'brxsaas:richtext' to avoid naming conflicts.
[ <br> "aFieldGroupType", <br> "aFieldGroupWithFieldGroupType" <br> ]

Presentation properties

Property NameProperty TypeRequiredDescriptionExamples
contentPickerTypeStringyesThe way the picker buttons will be rendered. The valid values are 'links' (default) and 'dropdown':

links: shows as many buttons as available compounds. When hitting a button, adds a new block of that compound type

dropdown: presents a dropdown containing all the available compounds and an additional button to add an item of the selected compound of the dropdown
links
showFieldGroupNamesBooleanyesThe valid values are 'false' (default) and 'true', it determines whether each item should add the field group name on top of it. When it's active, clicking on the name will collapse or expand the item.

In the document type editor, this corresponds to the 'showCompoundNames' property
true

Validation properties

Property NameProperty TypeRequiredDescriptionExamples
maxItemIntegernoWhen the multiple option is selected, the maximum number of items that can be added. If multiple is not selected, the maximum number will be 1, regardless of the value of this field.

In the document type editor, this corresponds to the 'maxitems' property
10

Default value

The default value is an array of FieldValues, as needed for a specified FieldGroup type. An additional property is used to specify for which fieldgroup a default value is given

Property NameProperty TypeRequiredDescriptionExamples
fieldGroupTypeStringyesThe name of the fieldgroup type this default value is provided forMyFieldGroupType

An example of a SelectableFieldGroup field can be seen below:

{
  "name": "aSelectableFieldGroupField",
  "type": "SelectableFieldGroup",
  "required": false,
  "multiple": true,
  "fieldGroupTypes": [
    "aFieldGroupType",
    "aFieldGroupWithFieldGroupType"
  ],
  "presentation": {
    "caption": "A SelectableFieldGroup field",
    "hint": "Hint for SelectableFieldGroup field",
    "layoutColumn": 1,
    "contentPickerType": "links",
    "showFieldGroupNames": false
  },
  "validations": {
    "maxItem": 10
  },
  "defaultValue": [
    {
      "fieldGroupType": "aFieldGroupType",
      "fields": {
        "title": [
          "A default title"
        ],
        "calendardate": [
          "2021-10-06T22:00:00Z"
        ]
      }
    },
    {
      "fieldGroupType": "aFieldGroupWithFieldGroupType",
      "fields": {
        "aFieldGroupField": [
          {
            "fields": {
              "title": [
                "A different default title"
              ],
              "calendardate": [
                "2022-02-08T23:00:00Z"
              ]
            }
          }
        ],
        "title": [
          "Top level title"
        ]
      }
    }
  ]
}

The example above makes use of the following two FieldGroup types:

{
  "name": "aFieldGroupType",
  "type": "FieldGroup",
  "presentation": {
    "layout": "one-column"
  },
  "fields": [
    {
      "name": "title",
      "type": "String",
      "required": false,
      "multiple": false,
      "presentation": {
        "caption": "Title",
        "hint": "",
        "layoutColumn": 1,
        "displayType": "Simple"
      },
      "validations": {
        "maxLength": null
      },
      "defaultValue": [
        "A default title"
      ]
    },
    {
      "name": "calendardate",
      "type": "Date",
      "required": false,
      "multiple": false,
      "presentation": {
        "caption": "Calendar Date",
        "hint": "",
        "layoutColumn": 1,
        "timeSelectable": false
      },
      "defaultValue": [
        "2021-10-06T22:00:00Z"
      ]
    }
  ]
}
{
  "name": "aFieldGroupWithFieldGroupType",
  "type": "FieldGroup",
  "presentation": {
    "layout": "one-column"
  },
  "fields": [
    {
      "name": "title",
      "type": "String",
      "required": false,
      "multiple": false,
      "presentation": {
        "caption": "Title",
        "hint": "",
        "layoutColumn": 1,
        "displayType": "Simple"
      },
      "validations": {
        "maxLength": null
      },
      "defaultValue": [
        "Top level title"
      ]
    },
    {
      "name": "aFieldGroupField",
      "type": "FieldGroup",
      "required": false,
      "multiple": false,
      "presentation": {
        "caption": "A FieldGroup field",
        "hint": "",
        "layoutColumn": 1
      },
      "defaultValue": [
        {
          "fields": {
            "title": [
              "A different default title"
            ],
            "calendardate": [
              "2022-02-08T23:00:00Z"
            ]
          }
        }
      ],
      "fieldGroupType": "aFieldGroupType"
    }
  ]
}