{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://github.com/Alfresco/alfresco-content-app/blob/develop/extension.schema.json", "title": "ACA Extension Schema", "description": "Provides a validation schema for ACA extensions", "definitions": { "ruleRef": { "type": "object", "required": ["id", "type"], "properties": { "id": { "description": "Unique rule definition id", "type": "string" }, "type": { "description": "Rule evaluator type", "type": "string" }, "parameters": { "description": "Rule evaluator parameters", "type": "array", "items": { "$ref": "#/definitions/ruleParameter" }, "minItems": 1 } } }, "ruleParameter": { "type": "object", "required": ["type", "value"], "properties": { "type": { "description": "Rule parameter type", "type": "string" }, "value": { "description": "Rule parameter value", "type": "string" }, "parameters": { "description": "Parameters", "type": "array", "items": { "$ref": "#/definitions/ruleParameter" }, "minItems": 1 } } }, "routeRef": { "type": "object", "required": ["id", "path", "component"], "properties": { "id": { "description": "Unique route reference identifier.", "type": "string" }, "path": { "description": "Route path to register.", "type": "string" }, "component": { "description": "Unique identifier for the Component to use with the route.", "type": "string" }, "layout": { "description": "Unique identifier for the custom layout component to use.", "type": "string" }, "auth": { "description": "List of the authentication guards to use with the route.", "type": "array", "items": { "type": "string" }, "minLength": 1, "uniqueItems": true }, "data": { "description": "Custom data to pass to the activated route so that your components can access it", "type": "object" } } }, "actionRef": { "type": "object", "required": ["id", "type"], "properties": { "id": { "description": "Unique action identifier", "type": "string" }, "type": { "description": "Action type", "type": "string" }, "payload": { "description": "Action payload value (string or expression)", "type": "string" } } }, "contentActionRef": { "type": "object", "required": ["id"], "properties": { "id": { "description": "Unique action identifier.", "type": "string" }, "type": { "description": "Element type", "type": "string", "enum": ["default", "button", "separator", "menu", "custom"] }, "title": { "description": "Element title", "type": "string" }, "tooltip": { "description": "Element tooltip to display on hover", "type": "string" }, "description": { "description": "Element description, used for the tooltips.", "type": "string" }, "description-disabled": { "description": "Description to use when element is in the disabled state.", "type": "string" }, "order": { "description": "Element order", "type": "number" }, "icon": { "description": "Element icon", "type": "string" }, "disabled": { "description": "Toggles disabled state", "type": "boolean" }, "component": { "description": "Custom component id (requires type to be 'custom')", "type": "string" }, "children": { "description": "Child entries for the container types.", "type": "array", "items": { "$ref": "#/definitions/contentActionRef" }, "minItems": 1 }, "actions": { "description": "Element actions", "type": "object", "properties": { "click": { "description": "Action reference for the click handler", "type": "string" } } }, "rules": { "description": "Element rules", "type": "object", "properties": { "enabled": { "description": "Rule to evaluate the enabled state", "type": "string" }, "visible": { "description": "Rule to evaluate the visibility state", "type": "string" } } } } }, "navBarLinkRef": { "type": "object", "required": ["id", "icon", "title"], "properties": { "id": { "description": "Unique identifier", "type": "string" }, "icon": { "description": "Element icon", "type": "string" }, "title": { "description": "Element title", "type": "string" }, "route": { "description": "Route reference identifier", "type": "string" }, "description": { "description": "Element description or tooltip", "type": "string" }, "order": { "description": "Element order", "type": "number" }, "disabled": { "description": "Toggles disabled state", "type": "boolean" }, "children": { "description": "Navigation children items", "type": "array", "items": { "oneOf": [ { "type": "object", "required": [ "id", "title", "route" ], "properties": { "id": { "description": "Unique identifier", "type": "string" }, "title": { "description": "Element title", "type": "string" }, "route": { "description": "Route reference identifier", "type": "string" }, "disabled": { "description": "Toggles disabled state", "type": "boolean" } }, "not": { "required": ["children"] } } ] }, "minItems": 1 }, "rules": { "description": "Element rules", "type": "object", "properties": { "visible": { "description": "Rule to evaluate the visibility state", "type": "string" } } } }, "oneOf": [ { "required": ["route"], "not": { "required": ["children"] } }, { "required": ["children"], "not": { "required": ["route"] } } ] }, "navBarGroupRef": { "type": "object", "required": ["id", "items"], "properties": { "id": { "description": "Unique identifier for the navigation group", "type": "string" }, "items": { "description": "Navigation group items", "type": "array", "items": { "$ref": "#/definitions/navBarLinkRef" }, "minItems": 1 }, "order": { "description": "Group order", "type": "number" }, "rules": { "description": "Element rules", "type": "object", "properties": { "visible": { "description": "Rule to evaluate the visibility state", "type": "string" } } } } }, "sidebarTabRef": { "type": "object", "required": ["id", "component"], "properties": { "id": { "description": "Unique identifier for the navigation group", "type": "string" }, "title": { "description": "Element title", "type": "string" }, "component": { "description": "Component id", "type": "string" }, "icon": { "description": "Material icon name", "type": "string" }, "disabled": { "description": "Toggles disabled state", "type": "boolean" }, "order": { "description": "Element order", "type": "number" }, "rules": { "description": "Element rules", "type": "object", "properties": { "visible": { "description": "Rule to evaluate the visibility state", "type": "string" } } } } }, "viewerExtensionRef": { "type": "object", "required": ["id", "component", "fileExtension"], "properties": { "id": { "description": "Unique identifier for the navigation group", "type": "string" }, "component": { "description": "Component id", "type": "string" }, "fileExtension": { "description": "Target file extension", "type": "string" }, "order": { "description": "Group order", "type": "number" }, "disabled": { "description": "Toggles the disabled state", "type": "boolean" } } }, "content-metadata-aspect": { "description": "Content metadata aspect definition", "type": "object", "required": ["id"], "properties": { "id": { "type": "string", "description": "Unique identifier" }, "includeAll": { "type": "boolean", "description": "Enable to automatically show all properties" }, "disabled": { "description": "Toggles disabled state", "type": "boolean" } }, "patternProperties": { ".*": { "oneOf": [ { "description": "Wildcard for every property", "type": "string", "pattern": "^\\*$" }, { "description": "Properties array", "type": "array", "items": { "description": "Property name", "type": "string" } } ] } } }, "content-metadata-layout-group": { "description": "Content metadata layout groups definition", "type": "array", "items": [ { "description": "Content metadata layout group definition", "type": "object", "required": ["id"], "properties": { "id": { "type": "string", "description": "Unique identifier" }, "title": { "type": "string", "description": "Content metadata layout group definition title" }, "items": { "type": "array", "description": "Content metadata layout group definition items", "items": { "oneOf": [ { "type": "object", "required": [ "id", "aspect", "properties" ], "properties": { "id": { "description": "Unique identifier", "type": "string" }, "aspect": { "description": "Aspect group", "type": "string" }, "properties": { "description": "Wildcard character", "type": "string", "pattern": "^\\*$" } } }, { "type": "object", "required": [ "id", "aspect", "properties" ], "properties": { "id": { "description": "Unique identifier", "type": "string" }, "aspect": { "description": "Aspect group", "type": "string" }, "properties": { "description": "list of aspect properties", "type": "array" } } }, { "type": "object", "required": [ "id", "type", "properties" ], "properties": { "id": { "description": "Unique identifier", "type": "string" }, "type": { "description": "Type group", "type": "string" }, "properties": { "description": "Wildcard character", "type": "string", "pattern": "^\\*$" } } }, { "type": "object", "required": [ "id", "type", "properties" ], "properties": { "id": { "description": "Unique identifier", "type": "string" }, "type": { "description": "Type group", "type": "string" }, "properties": { "description": "list of type properties", "type": "array" } } }, { "type": "object", "required": [ "id", "disabled" ], "properties": { "id": { "description": "Unique identifier", "type": "string" }, "disabled": { "description": "Toggles disabled state", "type": "boolean" } } } ] } } } } ] }, "documentListPresetRef": { "type": "object", "required": ["id", "key", "type"], "properties": { "id": { "description": "Unique identifier.", "type": "string" }, "disabled": { "description": "Toggles the disabled state", "type": "boolean" }, "order": { "description": "Element order", "type": "number" }, "key": { "description": "Property key", "type": "string" }, "sortingKey": { "description": "Property key for server sorting", "type": "string" }, "type": { "description": "Column type", "type": "string", "enum": ["text", "image", "date", "fileSize"] }, "title": { "description": "Column title", "type": "string" }, "format": { "description": "Column format", "type": "string" }, "class": { "description": "CSS class name", "type": "string" }, "sortable": { "description": "Toggles sortable state of the column", "type": "boolean" }, "resizable": { "description": "Toggles resizable state of the column", "type": "boolean" }, "draggable": { "description": "Toggles draggable state of the column", "type": "boolean" }, "isHidden": { "description": "Toggles hidden state of the column", "type": "boolean" }, "template": { "description": "Column template id", "type": "string" }, "desktopOnly": { "description": "Display column only for large screens", "type": "boolean" }, "maxTextLength": { "description": "Maximum text length before truncation", "type": "number" } } }, "iconRef": { "type": "object", "required": ["id", "value"], "properties": { "id": { "description": "Unique identifier. Must be in the format '[namespace]:[name]'.", "type": "string" }, "value": { "description": "Icon path relative to the application root.", "type": "string" }, "disabled": { "description": "Toggles the disabled state", "type": "boolean" } } }, "searchRef": { "type": "object", "allOf": [ { "type": "object", "properties": { "id": { "description": "Unique identifier.", "type": "string" }, "order": { "description": "Element order", "type": "number" }, "rules": { "description": "Element rules", "type": "object", "properties": { "visible": { "description": "Rule to evaluate the visibility state", "type": "string" } } } } }, { "$ref": "node_modules/@alfresco/adf-core/app.config.schema.json#/definitions/search-configuration" } ] }, "customMetadataPanels": { "description": "List of cutom metadata panels to display in metadata card component", "type": "array", "items": { "ref": "#/definitions/contentActionRef" }, "minItems": 1 }, "badge": { "type": "object", "required": ["id", "icon", "tooltip"], "properties": { "id": { "description": "Unique identifier. Must be in the format '[namespace]:[name]'.", "type": "string" }, "icon": { "description": "Badge icon to display.", "type": "string" }, "tooltip": { "description": "Badge tooltip to display on hover.", "type": "string" }, "component": { "description": "Custom component id to display", "type": "string" } } } }, "type": "object", "required": ["$id", "$name", "$version", "$vendor", "$license"], "properties": { "$id": { "description": "Unique identifier", "type": "string" }, "$name": { "description": "Extension name", "type": "string" }, "$version": { "description": "Extension version", "type": "string" }, "$vendor": { "description": "Extension owner", "type": "string" }, "$license": { "description": "Indicates the license of the extension.", "type": "string" }, "$runtime": { "description": "(deprecated) Minimal extension runtime supported by extension", "type": "string" }, "$description": { "description": "Brief description on what the extension does", "type": "string" }, "$references": { "description": "References to external files", "type": "array", "items": { "type": "string" }, "minItems": 0, "uniqueItems": true }, "$ignoreReferenceList": { "description": "Plugins references to exclude", "type": "array", "items": { "type": "string" }, "minItems": 0, "uniqueItems": true }, "rules": { "description": "List of rule definitions", "type": "array", "items": { "$ref": "#/definitions/ruleRef" }, "minItems": 1 }, "routes": { "description": "List of custom application routes", "type": "array", "items": { "$ref": "#/definitions/routeRef" }, "minItems": 1 }, "actions": { "description": "List of action definitions", "type": "array", "items": { "$ref": "#/definitions/actionRef" }, "minItems": 1 }, "features": { "description": "Application-specific features and extensions", "type": "object", "properties": { "icons": { "description": "Custom icons", "type": "array", "items": { "$ref": "#/definitions/iconRef" }, "minItems": 1 }, "header": { "description": "Application header extensions", "type": "array", "items": { "$ref": "#/definitions/contentActionRef" }, "minItems": 1 }, "create": { "description": "The [New] menu component extensions", "type": "array", "items": { "$ref": "#/definitions/contentActionRef" }, "minItems": 1 }, "viewer": { "description": "Viewer component extensions", "type": "object", "properties": { "rules": { "description": "Viewer rules", "type": "object", "properties": { "canPreview": { "description": "Controls whether preview is enabled for particular node", "type": "string" }, "showNavigation": { "description": "Controls viewer navigation options", "type": "string" } } }, "openWith": { "description": "The [Open With] menu extensions", "type": "array", "items": { "$ref": "#/definitions/contentActionRef" }, "minItems": 1 }, "toolbarActions": { "description": "Toolbar entries from outside the More menu", "type": "array", "items": { "$ref": "#/definitions/contentActionRef" }, "minItems": 1 }, "extensions": { "description": "Viewer content extensions", "type": "array", "items": { "$ref": "#/definitions/viewerExtensionRef" }, "minItems": 1 } } }, "navbar": { "description": "Navigation bar extensions", "type": "array", "items": { "$ref": "#/definitions/navBarGroupRef" }, "minItems": 1 }, "sidebar": { "description": "Sidebar extensions", "type": "object", "properties": { "toolbar": { "description": "Toolbar entries", "type": "array", "items": { "$ref": "#/definitions/contentActionRef" } }, "tabs": { "description": "Tabs entries", "type": "array", "items": { "$ref": "#/definitions/sidebarTabRef" }, "minItems": 1 } } }, "toolbar": { "description": "Toolbar entries", "type": "array", "items": { "$ref": "#/definitions/contentActionRef" }, "minItems": 1 }, "contextMenu": { "description": "Context menu entries", "type": "array", "items": { "$ref": "#/definitions/contentActionRef" }, "minItems": 1 }, "bulk-actions": { "description": "Bulk actions entries", "type": "array", "items": { "$ref": "#/definitions/contentActionRef" }, "minItems": 1 }, "content-metadata-presets": { "description": "Configuration for the presets for content metadata component", "type": "array", "items": { "type": "object", "required": ["id"], "properties": { "id": { "type": "string", "description": "Unique identifier" }, "disabled": { "type": "boolean", "description": "Toggle disabled state" } }, "patternProperties": { ".*": { "oneOf": [ { "type": "string", "pattern": "^\\*$", "description": "Wildcard for every aspect" }, { "$ref": "#/definitions/content-metadata-aspect" }, { "$ref": "#/definitions/content-metadata-layout-group" } ] } } } }, "documentList": { "description": "Document list extensions", "type": "object", "properties": { "files": { "description": "Files document list preset", "type": "array", "items": { "$ref": "#/definitions/documentListPresetRef" }, "minItems": 1 }, "libraries": { "description": "Libraries document list preset", "type": "array", "items": { "$ref": "#/definitions/documentListPresetRef" }, "minItems": 1 }, "shared": { "description": "Shared Files document list preset", "type": "array", "items": { "$ref": "#/definitions/documentListPresetRef" }, "minItems": 1 }, "recent": { "description": "Recent Files document list preset", "type": "array", "items": { "$ref": "#/definitions/documentListPresetRef" }, "minItems": 1 }, "favorites": { "description": "Favorites document list preset", "type": "array", "items": { "$ref": "#/definitions/documentListPresetRef" }, "minItems": 1 }, "trashcan": { "description": "Trashcan document list preset", "type": "array", "items": { "$ref": "#/definitions/documentListPresetRef" }, "minItems": 1 }, "search-results": { "description": "Search results list preset", "type": "array", "items": { "$ref": "#/definitions/documentListPresetRef" }, "minItems": 1 } } }, "badges": { "description": "List of badges to display in the name column", "type": "array", "items": { "$ref": "#/definitions/badge" }, "minItems": 1 }, "search": { "description": "aca search extension", "type": "array", "items": { "$ref": "#/definitions/searchRef" } } } } } }