{ "$id": "https://schemas.botframework.com/schemas/skills/skill-manifest.json", "$schema": "http://json-schema.org/draft-07/schema#", "$version": "2.0.1", "title": "Skill Manifest Schema", "description": "A schema for Bot Framework skill manifests", "type": "object", "required": [ "$id", "$schema", "name", "version", "publisherName", "endpoints" ], "additionalProperties": false, "properties": { "$schema": { "type": "string", "format": "uri", "description": "The schema to verify this skill manifest against" }, "$id": { "type": "string", "description": "The identifier for the skill manifest" }, "name": { "type": "string", "description": "Name of the skill" }, "version": { "type": "string", "description": "Skill version" }, "description": { "type": "string", "description": "A human readable description for the skill" }, "publisherName": { "type": "string", "description": "The name of the skill publisher" }, "privacyUrl": { "type": "string", "format": "uri", "description": "The URL with the privacy description for the skill" }, "copyright": { "type": "string", "description": "The copyright for the skill" }, "license": { "type": "string", "description": "The license agreement for the skill" }, "iconUrl": { "type": "string", "format": "uri", "description": "Optional icon to be shown for the skill" }, "tags": { "type": "array", "uniqueItems": true, "description": "An array of strings with tags for the skill" }, "endpoints": { "type": "array", "minItems": 1, "uniqueItems": true, "description": "List of endpoints supported by the skill", "items": { "$ref": "#/definitions/endpoint" } }, "activities": { "type": "object", "description": "Definition for the activities accepted by the skill", "additionalProperties": { "anyOf": [ { "$ref": "#/definitions/eventActivity" }, { "$ref": "#/definitions/invokeActivity" }, { "$ref": "#/definitions/messageActivity" } ] } }, "definitions": { "type": "object", "description": "Definitions of the structure of object payloads", "additionalProperties": { "$ref": "http://json-schema.org/draft-07/schema#" } } }, "definitions": { "endpoint": { "type": "object", "description": "Skill endpoint definition", "additionalProperties": false, "required": [ "name", "endpointUrl", "msAppId" ], "properties": { "name": { "type": "string", "description": "Unique name for the endpoint", "default": "default" }, "protocol": { "type": "string", "description": "Supported protocol", "default": "BotFrameworkV3" }, "description": { "type": "string", "title": "Description", "description": "Description of the endpoint", "examples": [ "Production bot" ] }, "endpointUrl": { "type": "string", "title": "Endpoint Url", "format": "uri", "description": "Endpoint for the skill", "examples": [ "http://contoso.com/api/messaages" ] }, "msAppId": { "type": "string", "title": "Microsoft App Id", "pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$", "description": "The Microsoft AppId for the skill. This app ID is used to authenticate requests" } } }, "eventActivity": { "type": "object", "description": "An activity with Type=Event where the Name property indicates the task that the skill will execute", "required": [ "type", "name" ], "additionalProperties": false, "properties": { "type": { "type": "string", "description": "The activity type", "enum": [ "event" ] }, "name": { "type": "string", "description": "The name for the event", "examples": [ "BookFlight" ] }, "description": { "type": "string", "title": "Description", "description": "Description for the activity" }, "value": { "type": "object", "description": "The JsonSchema definition of the shape of the value property that this event expects", "$ref": "http://json-schema.org/draft-07/schema#" }, "resultValue": { "type": "object", "description": "The JsonSchema definition of the shape of the resultValue that this event may produce", "$ref": "http://json-schema.org/draft-07/schema#" } } }, "invokeActivity": { "type": "object", "description": "An activity with Type=Invoke where the Name property indicates the task that the skill will execute", "required": [ "type", "name" ], "additionalProperties": false, "properties": { "type": { "type": "string", "description": "The activity type", "enum": [ "invoke" ] }, "name": { "type": "string", "description": "The name property for the invoke activity", "examples": [ "GetWeather" ] }, "description": { "type": "string", "title": "Description", "description": "Description for the activity" }, "value": { "type": "object", "description": "The JsonSchema definition of the shape of the value property that this event expects", "$ref": "http://json-schema.org/draft-07/schema#" }, "resultValue": { "type": "object", "description": "The JsonSchema definition of the shape of the resultValue that this event may produce", "$ref": "http://json-schema.org/draft-07/schema#" } } }, "messageActivity": { "type": "object", "description": "An activity with Type=Message where the utterance is passed to the skill in the Text property", "required": [ "type" ], "additionalProperties": false, "properties": { "type": { "type": "string", "description": "The activity type", "enum": [ "message" ], "default": "message" }, "description": { "type": "string", "title": "Description", "description": "Description for the activity" }, "value": { "type": "object", "description": "The JsonSchema definition of the shape of the value property that this message would like to have", "$ref": "http://json-schema.org/draft-07/schema#" }, "resultValue": { "type": "object", "description": "The JsonSchema definition of the shape of the resultValue that this message may produce", "$ref": "http://json-schema.org/draft-07/schema#" } } } } }