Friendly URL for component schemas (#5953)

* Created v{version} folder with copies of current schemas.
Updated readme to note new location and legacy versions

* Deleted definitions.schema and updated readme.

* Deleted the right definitions.schema

* removed extra space
This commit is contained in:
Gabo Gilabert 2020-07-07 21:24:21 -04:00 коммит произвёл GitHub
Родитель cc217ecefa
Коммит d309147b91
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 287 добавлений и 0 удалений

Просмотреть файл

@ -5,3 +5,18 @@ Bot Framework declarative component definitions (via .schema files which describ
The extensions are in baseComponent.schema and bf dialog:merge -u will
merge baseComponent.schema + json.schema => component.schema
## Published location
The component JSON schemas are published at:
`https://schemas.botframework.com/schemas/component/v{version}/component.schema`
Example:
`https://schemas.botframework.com/schemas/component/v1.0/component.schema`
You should use the published version when referencing this schema.
## Legacy versions
The `component.schema` and `definitions.schema` files are left in the root folder for backwards compatibility purposes, and should not be used. Use the `\v{version}\component.schema` version instead.

Просмотреть файл

@ -0,0 +1,272 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schemas.botframework.com/schemas/component/v1.0/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": {
"$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": {
"type": "string",
"title": "Expression",
"description": "Expression to evaluate.",
"pattern": "^.*\\S.*",
"examples": [
"user.age > 13"
]
},
"equalsExpression": {
"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": [
"=..."
]
}
]
}
}
}