{ "$id": "https://schemas.botframework.com/schemas/skills/v2.2/skill-manifest.json", "$schema": "http://json-schema.org/draft-07/schema#", "$version": "2.2.0", "title": "Skill Manifest Schema", "description": "A schema for Bot Framework skill manifests", "type": "object", "required": [ "$id", "$schema", "name", "version", "publisherName", "endpoints" ], "properties": { "$schema": { "type": "string", "format": "uri", "title": "Manifest schema", "description": "The schema to verify this skill manifest against" }, "$id": { "type": "string", "title": "Manifest ID", "description": "The identifier for the skill manifest" }, "name": { "type": "string", "title": "Skill name", "description": "Name of the skill" }, "version": { "type": "string", "title": "Skill version", "description": "Skill version" }, "description": { "type": "string", "title": "Skill description", "description": "A human readable description for the skill" }, "publisherName": { "type": "string", "title": "Publisher name", "description": "The name of the skill publisher" }, "privacyUrl": { "type": "string", "format": "uri-reference", "title": "Privacy URL", "description": "The URL with the privacy description for the skill" }, "copyright": { "type": "string", "title": "Copyright", "description": "The copyright for the skill" }, "license": { "type": "string", "title": "License", "description": "The license agreement for the skill" }, "iconUrl": { "type": "string", "format": "uri-reference", "title": "Icon URL", "description": "Optional icon to be shown for the skill" }, "tags": { "type": "array", "uniqueItems": true, "title": "Tags", "description": "An array of strings with tags for the skill", "items": { "type": "string" } }, "endpoints": { "type": "array", "minItems": 1, "uniqueItems": true, "title": "Skill endpoints", "description": "List of endpoints supported by the skill", "items": { "$ref": "#/definitions/endpoint" } }, "dispatchModels": { "type": "object", "title": "Language models", "description": "Language models and top level intents for the skill", "properties": { "languages": { "type": "object", "description": "List of languages supported by the skill", "minProperties": 1, "additionalProperties": { "type": "array", "minItems": 1, "uniqueItems": true, "description": "List of language models supported by the skill", "items": { "$ref": "#/definitions/languageModel" } } }, "intents": { "type": "array", "uniqueItems": true, "description": "A list of the skill's top level intents that can be used by the consumer to filter out language files.", "items": { "type": "string" } } }, "additionalProperties": false }, "activities": { "type": "object", "title": "Activities", "description": "Definition of activities to enable skill host tooling to programmatically interact with the skill.", "additionalProperties": { "oneOf": [ { "$ref": "#/definitions/eventActivity" }, { "$ref": "#/definitions/invokeActivity" }, { "$ref": "#/definitions/messageActivity" }, { "$ref": "#/definitions/otherActivities" } ] } }, "activitiesSent": { "type": "object", "title": "Activities sent", "description": "Definitions of activities to enable skill host tooling to handle activities which may be sent by the skill.", "additionalProperties": { "oneOf": [ { "$ref": "#/definitions/eventActivity" }, { "$ref": "#/definitions/messageActivity" }, { "$ref": "#/definitions/otherActivities" } ] } }, "definitions": { "type": "object", "description": "Definitions of the structure of object payloads", "additionalProperties": { "$ref": "http://json-schema.org/draft-07/schema#" } } }, "additionalProperties": false, "definitions": { "endpoint": { "type": "object", "title": "Skill endpoint", "description": "Skill endpoint definition", "required": [ "name", "endpointUrl", "msAppId" ], "properties": { "name": { "type": "string", "title": "Endpoint name", "description": "Unique name for the endpoint", "default": "default" }, "protocol": { "type": "string", "title": "Endpoint protocol", "description": "Supported protocol", "default": "BotFrameworkV3" }, "description": { "type": "string", "title": "Endpoint description", "description": "Description of the endpoint", "examples": [ "Production bot" ] }, "endpointUrl": { "type": "string", "format": "uri", "title": "Endpoint URL", "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" } }, "additionalProperties": false }, "eventActivity": { "type": "object", "title": "Event Activity", "description": "An activity with Type=Event where the Name property indicates the task that the skill will execute", "required": [ "type", "name" ], "properties": { "type": { "type": "string", "title": "Activity type", "description": "The activity type", "enum": [ "event" ] }, "name": { "type": "string", "title": "Event name", "description": "The name for the event", "examples": [ "BookFlight" ] }, "description": { "type": "string", "title": "Event description", "description": "Description for the activity" }, "value": { "$ref": "http://json-schema.org/draft-07/schema#", "type": "object", "title": "Value", "description": "The JsonSchema definition of the shape of the value property that this event expects" }, "resultValue": { "$ref": "http://json-schema.org/draft-07/schema#", "type": "object", "title": "Result", "description": "The JsonSchema definition of the shape of the resultValue that this event may produce" } }, "additionalProperties": false }, "invokeActivity": { "type": "object", "title": "Invoke Activity", "description": "An activity with Type=Invoke where the Name property indicates the task that the skill will execute", "required": [ "type", "name" ], "properties": { "type": { "type": "string", "title": "Activity type", "description": "The activity type", "enum": [ "invoke" ] }, "name": { "type": "string", "title": "Invoke name", "description": "The name property for the invoke activity", "examples": [ "GetWeather" ] }, "description": { "type": "string", "title": "Description", "description": "Description for the activity" }, "value": { "type": "object", "title": "Value", "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", "title": "Result", "description": "The JsonSchema definition of the shape of the resultValue that this event may produce", "$ref": "http://json-schema.org/draft-07/schema#" } }, "additionalProperties": false }, "messageActivity": { "type": "object", "title": "Message Activity", "description": "An activity with Type=Message where the utterance is passed to the skill in the Text property", "required": [ "type" ], "properties": { "type": { "type": "string", "title": "Activity type", "description": "The activity type", "enum": [ "message" ] }, "description": { "type": "string", "title": "Description", "description": "Description for the activity" }, "value": { "type": "object", "title": "Value", "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", "title": "Result", "description": "The JsonSchema definition of the shape of the resultValue that this message may produce", "$ref": "http://json-schema.org/draft-07/schema#" } }, "additionalProperties": false }, "otherActivities": { "type": "object", "title": "Activity", "required": [ "type" ], "properties": { "type": { "type": "string", "title": "Activity type", "description": "The activity type", "enum": [ "messageReaction", "endOfConversation", "handoff", "typing", "conversationUpdate", "trace", "installationUpdate", "contactRelationUpdate", "suggestion", "deleteUserData", "messageUpdate", "messageDelete" ] } }, "additionalProperties": true }, "languageModel": { "type": "object", "title": "Language model", "description": "A language model for a given culture. The name is a combination of an ISO 639 two-letter lowercase culture code associated with a language and an ISO 3166 two-letter uppercase subculture code associated with a country or region", "required": [ "name", "contentType", "url" ], "properties": { "name": { "type": "string", "title": "Language model name", "description": "Name for the language model" }, "contentType": { "type": "string", "title": "Language model content type", "description": "Type of the language model" }, "url": { "type": "string", "format": "uri-reference", "title": "Language model URL", "description": "An absolute or relative URI for the location of the language model file" }, "description": { "type": "string", "title": "Description", "description": "Description for the language model" } }, "additionalProperties": false } } }