{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://raw.githubusercontent.com/microsoft/botframework-sdk/master/schemas/component/component.schema", "title": "JSON Schema definition for Bot Framework dialog schemas.", "description": "In order to create a component for Bot Framework .dialog files you need to create a schema file describing your configuration that meets this definition. This extends http://json-schema.org/draft-07/schema#.", "allOf": [ { "$ref": "http://json-schema.org/draft-07/schema#" }, { "properties": { "$policies": { "type": "object", "properties": { "interactive": { "title": "Interactive", "description": "Dialog will wait for input.", "type": "boolean", "default": false }, "nonInteractive": { "title": "Non-interactive", "description": "No child dialogs can wait for input.", "type": "boolean", "default": false }, "lastAction": { "title": "Last Action", "description": "Dialog must be the last action in a list of actions.", "type": "boolean", "default": false }, "requiresKind": { "title": "Requires Kind", "description": "There must be a child dialog of one of the included kinds or an extension of those kinds.", "type": "array", "items": { "type": "string" }, "default": [] } } }, "$role": { "title": "$role", "description": "Defines the roles played in the dialog schema one of [expression|interface|implements($kind)|extends($kind)].", "oneOf": [ { "$ref": "#/definitions/role" }, { "type": "array", "items": { "$ref": "#/definitions/role" } } ] }, "$kind": { "title": "$kind", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", "type": "string", "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$" } } } ], "definitions": { "role": { "title": "$role", "description": "Defines the role played in the dialog schema from [expression|interface|implements($kind)|extends($kind)].", "type": "string", "pattern": "^((expression)|(interface)|(implements\\([a-zA-Z][a-zA-Z0-9.]*\\))|(extends\\([a-zA-Z][a-zA-Z0-9.]*\\)))$" }, "component": { "properties": { "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", "type": "string", "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$" }, "$designer": { "title": "Designer information", "type": "object", "description": "Extra information for the Bot Framework Composer." } }, "required": [ "$kind" ], "additionalProperties": false, "patternProperties": { "^\\$": { "title": "Tooling property", "description": "Open ended property for tooling." } } }, "expression": { "$role": "expression", "type": "string", "title": "Expression", "description": "Expression to evaluate.", "pattern": "^.*\\S.*", "examples": [ "user.age > 13" ] }, "equalsExpression": { "$role": "expression", "type": "string", "title": "Expression", "description": "Expression starting with =.", "pattern": "^=.*\\S.*", "examples": [ "=user.name" ] }, "condition": { "$role": "expression", "title": "Boolean condition", "description": "Boolean constant or expression to evaluate.", "oneOf": [ { "$ref": "#/definitions/expression" }, { "type": "boolean", "title": "Boolean", "description": "Boolean value.", "default": true, "examples": [ false ] } ] }, "booleanExpression": { "$role": "expression", "title": "Boolean or expression", "description": "Boolean constant or expression to evaluate.", "oneOf": [ { "type": "boolean", "title": "Boolean", "description": "Boolean constant.", "default": false, "examples": [ false ] }, { "$ref": "#/definitions/equalsExpression", "examples": [ "=user.isVip" ] } ] }, "numberExpression": { "$role": "expression", "title": "Number or expression", "description": "Number constant or expression to evaluate.", "oneOf": [ { "type": "number", "title": "Number", "description": "Number constant.", "default": 0, "examples": [ 15.5 ] }, { "$ref": "#/definitions/equalsExpression", "examples": [ "=dialog.quantity" ] } ] }, "integerExpression": { "$role": "expression", "title": "Integer or expression", "description": "Integer constant or expression to evaluate.", "oneOf": [ { "type": "integer", "title": "Integer", "description": "Integer constant.", "default": 0, "examples": [ 15 ] }, { "$ref": "#/definitions/equalsExpression", "examples": [ "=user.age" ] } ] }, "stringExpression": { "$role": "expression", "title": "String or expression", "description": "Interpolated string or expression to evaluate.", "oneOf": [ { "type": "string", "title": "String", "description": "Interpolated string", "pattern": "^(?!(=)).*", "examples": [ "Hello ${user.name}" ] }, { "$ref": "#/definitions/equalsExpression", "examples": [ "=concat('x','y','z')" ] } ] }, "arrayExpression": { "$role": "expression", "title": "Array or expression", "description": "Array or expression to evaluate.", "oneOf": [ { "type": "array", "title": "Array", "description": "Array constant." }, { "$ref": "#/definitions/equalsExpression" } ] }, "objectExpression": { "$role": "expression", "title": "Object or expression", "description": "Object or expression to evaluate.", "oneOf": [ { "type": "object", "title": "Object", "description": "Object constant." }, { "$ref": "#/definitions/equalsExpression" } ] }, "valueExpression": { "$role": "expression", "title": "Any or expression", "description": "Any constant or expression to evaluate.", "oneOf": [ { "type": "object", "title": "Object", "description": "Object constant." }, { "type": "array", "title": "Array", "description": "Array constant." }, { "type": "string", "title": "String", "description": "Interpolated string.", "pattern": "^(?!(=)).*", "examples": [ "Hello ${user.name}" ] }, { "type": "boolean", "title": "Boolean", "description": "Boolean constant", "examples": [ false ] }, { "type": "number", "title": "Number", "description": "Number constant.", "examples": [ 15.5 ] }, { "$ref": "#/definitions/equalsExpression", "examples": [ "=..." ] } ] } } }