{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "JSON Schema tibi-server field meta configuration", "description": "tibi-server field meta linter", "type": "object", "anyOf": [ { "$ref": "#/definitions/minimum" }, { "$ref": "#/definitions/minimum", "patternProperties": { "^x-.*|widget|inputProps$": { "$comment": "stub for allOf" } }, "allOf": [ { "properties": { "widget": { "enum": ["text", "checkbox"] } } }, { "properties": { "inputProps": { "type": "object", "properties": { "multiline": { "type": "boolean" } } } } } ] }, { "$ref": "#/definitions/minimum", "patternProperties": { "^x-.*|widget$": { "$comment": "stub for allOf" } }, "allOf": [ { "properties": { "widget": { "enum": ["richtext", "richText"] } } } ] }, { "$ref": "#/definitions/minimum", "patternProperties": { "^x-.*|widget|choices$": { "$comment": "stub for allOf" } }, "allOf": [ { "required": ["choices"], "properties": { "widget": { "enum": [ "checkboxArray", "select", "selectArray", "chipArray" ] }, "choices": { "oneOf": [ { "type": "object", "description": "endpoint configuration", "additionalProperties": false, "properties": { "endpoint": { "type": "string", "description": "endpoint URL or path" }, "params": { "type": "object", "description": "query parameters" }, "mapping": { "type": "object", "description": "data mapping", "additionalProperties": false, "properties": { "id": { "type": "string", "description": "name of id field" }, "name": { "type": "string", "description": "name of name/description field" } } } } }, { "type": "array", "description": "choices to select from", "items": { "type": "object", "properties": { "id": { "oneOf": [ { "type": "null" }, { "type": "string" }, { "type": "number" } ] }, "name": { "description": "name is human readable value", "$ref": "definitions.json#/definitions/i18nString" }, "chipStyle": { "$ref": "https://raw.githubusercontent.com/rcorp/css-schema/master/schema.json" } }, "required": ["id", "name"] } } ] } } } ] }, { "$ref": "#/definitions/minimum", "patternProperties": { "^x-.*|widget$": { "$comment": "stub for allOf" } }, "allOf": [ { "properties": { "widget": { "enum": ["date", "datetime"] } } } ] }, { "$ref": "#/definitions/minimum", "patternProperties": { "^x-.*|widget$": { "$comment": "stub for allOf" } }, "allOf": [ { "properties": { "widget": { "enum": ["file", "image"] } } } ] }, { "$ref": "#/definitions/minimum", "patternProperties": { "^x-.*|widget$": { "$comment": "stub for allOf" } }, "allOf": [ { "properties": { "widget": { "enum": ["json"] } } } ] }, { "$ref": "#/definitions/minimum", "patternProperties": { "^x-.*|widget$": { "$comment": "stub for allOf" } }, "allOf": [ { "properties": { "widget": { "enum": ["tabs"] } } } ] }, { "$ref": "#/definitions/minimum", "patternProperties": { "^x-.*|widget|foreign$": { "$comment": "stub for allOf" } }, "allOf": [ { "properties": { "widget": { "enum": ["foreignKey"] }, "foreign": { "additionalProperties": false, "description": "foreign key configuration", "type": "object", "properties": { "collection": { "type": "string", "description": "collection name" }, "id": { "type": "string", "description": "id field name" }, "projection": { "type": "string", "description": "projection name used for fetching initial foreign entries from database" }, "sort": { "type": "string", "description": "sort field name (-field for descending)" }, "subNavigation": { "type": "number", "description": "sub navigation index in foreign collection" }, "render": { "description": "field name or eval object which returns string", "oneOf": [ { "type": "string" }, { "$ref": "definitions.json#/definitions/evalObjectWithRaw" }, { "type": "object", "properties": { "defaultCollectionViews": { "type": "boolean" } }, "required": [ "defaultCollectionViews" ] } ] } } } } } ] }, { "$ref": "#/definitions/minimum", "patternProperties": { "^x-.*|widget|baseHref|cssHref|imageSelect|fileSelect|videoSelect|customTags|style$": { "$comment": "stub for allOf" } }, "allOf": [ { "properties": { "widget": { "enum": ["contentbuilder"] }, "baseHref": { "description": "base href for relative links inside of ContentBuilder", "oneOf": [ { "type": "string" }, { "$ref": "definitions.json#/definitions/evalObject" } ] }, "cssHref": { "description": "href to css file for use with ContentBuilder", "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } }, { "$ref": "definitions.json#/definitions/evalObject" } ] }, "imageSelect": { "description": "target for image selection", "$ref": "#definitions/assetsTarget" }, "fileSelect": { "description": "target for file selection", "$ref": "#definitions/assetsTarget" }, "videoSelect": { "description": "target for video selection", "$ref": "#definitions/assetsTarget" }, "customTags": { "description": "custom tags to add to ContentBuilder", "oneOf": [ { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["placeholder", "label"], "properties": { "placeholder": { "type": "string", "description": "placeholder inside html code" }, "label": { "$ref": "definitions.json#/definitions/i18nString" } } } }, { "$ref": "definitions.json#/definitions/evalObject" } ] }, "style": { "description": "css style to inject into ContentBuilder", "oneOf": [ { "type": "string" }, { "$ref": "definitions.json#/definitions/evalObject" } ] } } } ] } ], "definitions": { "minimum": { "additionalProperties": false, "patternProperties": { "^x\\-": { "description": "template property" } }, "properties": { "folding": { "type": "object", "description": "folding configuration for array fields", "additionalProperties": false, "properties": { "previewUnfolded": { "description": "preview for unfolded array element", "oneOf": [ { "type": "string" }, { "$ref": "definitions.json#/definitions/evalObjectWithRaw" } ] }, "previewFolded": { "description": "preview for folded array element", "oneOf": [ { "type": "string" }, { "$ref": "definitions.json#/definitions/evalObjectWithRaw" } ] } } }, "hide": { "type": "boolean", "description": "hide field widget" }, "direction": { "type": "string", "enum": ["horizontal", "vertical"] }, "pathStep": { "type": "object", "properties": { "title": { "type": "string", "const": "Zeile" }, "icon": { "type": "string", "const": "viewSequentialOutline" } }, "required": ["title", "icon"] }, "metaElements": { "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "array", "items": { "type": "object", "additionalProperties": { "type": "string" } } }, { "type": "object", "properties": { "source": { "type": "string" } }, "required": ["source"] }, { "type": "array", "items": [ { "type": "string" }, { "type": "object", "properties": { "source": { "type": "string", "const": "layout" } }, "required": ["source"] } ] }, { "type": "object", "properties": { "tablist": { "type": "object", "properties": { "tabs": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "label": { "type": "string" }, "subFields": { "type": "array", "items": { "type": "object", "properties": { "source": { "type": "string" } }, "required": [ "source" ] } } }, "required": [ "name", "label", "subFields" ] } } }, "required": ["tabs"] } } } ] }, "openapi": { "type": "object" }, "label": { "$ref": "definitions.json#/definitions/i18nString", "description": "label for field" }, "addElementLabel": { "$ref": "definitions.json#/definitions/i18nString", "description": "label for adding element to list" }, "helperText": { "$ref": "definitions.json#/definitions/i18nString", "description": "helper text for field" }, "filter": { "type": "object", "description": "filter configuration for list view of this field", "additionalProperties": false, "properties": { "type": { "type": "string", "description": "filter type", "enum": [ "default", "select", "bool", "boolean", "input", "number", "foreignKey" ] } } }, "css": { "description": "css styles for field widgets", "oneOf": [ { "$comment": "for include tag", "type": "string" }, { "type": "object", "properties": { "input": { "description": "css styles for input widget", "oneOf": [ { "$comment": "for include tag", "type": "string" }, { "type": "object", "additionalProperties": false, "properties": { "wrapper": { "description": "css styles for input widget wrapper", "$ref": "#/definitions/css" }, "element": { "description": "css styles for input widget sub elements", "$ref": "#/definitions/css" }, "foreignEntry": { "description": "css styles for input widget linked foreign entries", "$ref": "#/definitions/css" } } } ] }, "view": { "description": "css styles for input widget", "oneOf": [ { "$comment": "for include tag", "type": "string" }, { "type": "object", "additionalProperties": false, "properties": { "wrapper": { "description": "css styles for view widget wrapper", "$ref": "#/definitions/css" }, "element": { "description": "css styles for view widget sub elements", "$ref": "#/definitions/css" }, "foreignEntry": { "description": "css styles for input widget linked foreign entries", "$ref": "#/definitions/css" } } } ] } } } ] }, "dependsOn": { "description": "depends on rule", "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "eval": { "type": "string", "description": "javascript code which hides field widget if evaluates to false with $, $this, $parent and $stack variables" } } } ] }, "containerProps": { "type": "object", "properties": { "class": { "type": "string" }, "layout": { "type": "object", "properties": { "breakBefore": { "type": "boolean" }, "breakAfter": { "type": "boolean" }, "size": { "type": "object", "properties": { "default": { "type": "string" }, "small": { "type": "string" }, "large": { "type": "string" } } } } } } }, "inputProps": { "type": "object", "additionalProperties": true }, "defaultValue": { "description": "default value or code to get the value", "oneOf": [ { "type": "array" }, { "type": "string" }, { "type": "null" }, { "type": "boolean" }, { "type": "number" }, { "type": "object", "properties": { "eval": { "type": "string", "description": "js code with $navigation variable" } } } ] }, "valueMap": { "type": "object", "description": "map values to icons", "patternProperties": { ".*": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "muiIcon": { "type": "string" }, "style": { "$comment": "https://raw.githubusercontent.com/rcorp/css-schema/master/schema.json" } } } ] } } } } }, "assetsTarget": { "oneOf": [ { "type": "string", "description": "url for assets view" }, { "type": "object", "properties": { "collection": { "type": "string", "description": "collection name" }, "subNavigation": { "type": "number", "description": "sub navigation index in collections meta.subNavigation" } } }, { "$ref": "definitions.json#/definitions/evalObject" } ] }, "css": { "anyOf": [ { "type": "string" }, { "$ref": "https://raw.githubusercontent.com/rcorp/css-schema/master/schema.json" }, { "type": "object", "properties": { "eval": { "type": "string", "description": "javascript code evaled to string or css object" } } } ] } } }