Schema Explorer

Choose element:

Important note about accessibility: In version 1.3 of the schema we introduced a label property on Inputs to improve accessibility. If the Host app you are targeting supports v1.3 you should use label instead of a TextBlock as seen in some samples below. Once most Host apps have updated to the latest version we will update the samples accordingly.

Input.ChoiceSet

Allows a user to input a Choice.

Property Type Required Description Version
type "Input.ChoiceSet" Yes Must be "Input.ChoiceSet". 1.0
id string Yes Unique identifier for the value. Used to identify collected input when the Submit action is performed. 1.0
choices Input.Choice[] No Choice options. 1.0
choices.data Data.Query No Allows dynamic fetching of choices from the bot to be displayed as suggestions in the dropdown when the user types in the input field. 1.6
isMultiSelect boolean No Allow multiple choices to be selected. 1.0
style ChoiceInputStyle No 1.0
value string No The initial choice (or set of choices) that should be selected. For multi-select, specify a comma-separated string of values. 1.0
placeholder string No Description of the input desired. Only visible when no selection has been made, the style is compact and isMultiSelect is false 1.0
wrap boolean No If true, allow text to wrap. Otherwise, text is clipped. 1.2

Inherited properties

Property Type Required Description Version
errorMessage string No Error message to display when entered input is invalid 1.3
isRequired boolean No Whether or not this input is required 1.3
label string No Label for this input 1.3
labelPosition InputLabelPosition No [SUPPORTED ONLY IN JAVASCRIPT SDK] Determines the position of the label. It can take ‘inline’ and ‘above’ values. By default, the label is placed ‘above’ when label position is not specified. 1.6
labelWidth string, number No [SUPPORTED ONLY IN JAVASCRIPT SDK] Determines the width of the label in percent like 40 or a specific pixel width like ‘40px’ when label is placed inline with the input. labelWidth would be ignored when the label is displayed above the input. 1.6
inputStyle InputStyle No [SUPPORTED ONLY IN JAVASCRIPT SDK] Style hint for input fields. Allows input fields to appear as read-only but when user clicks/focuses on the field, it allows them to update those fields. 1.6
fallback Element, FallbackOption No Describes what to do when an unknown element is encountered or the requires of this or any children can’t be met. 1.2
height BlockElementHeight No Specifies the height of the element. 1.1
separator boolean No When true, draw a separating line at the top of the element. 1.0
spacing Spacing No Controls the amount of spacing between this element and the preceding element. 1.0
isVisible boolean No, default: true If false, this item will be removed from the visual tree. 1.2
requires Dictionary<string> No A series of key/value pairs indicating features that the item requires with corresponding minimum version. When a feature is missing or of insufficient version, fallback is triggered. 1.2

Example

JSON
{
	"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
	"type": "AdaptiveCard",
	"version": "1.3",
	"body": [
		{
			"type": "Input.ChoiceSet",
			"id": "myColor",
			"style": "compact",
			"label": "What color do you want? (isMultiSelect:false, style:compact)",
			"isMultiSelect": false,
			"value": "1",
			"choices": [
				{
					"title": "Red",
					"value": "1"
				},
				{
					"title": "Green",
					"value": "2"
				},
				{
					"title": "Blue",
					"value": "3"
				}
			]
		},
		{
			"type": "Input.ChoiceSet",
			"id": "myColor2",
			"style": "expanded",
			"label": "What color do you want? (isMultiSelect:false, style:expanded)",
			"isMultiSelect": false,
			"value": "1",
			"choices": [
				{
					"title": "Red",
					"value": "1"
				},
				{
					"title": "Green",
					"value": "2"
				},
				{
					"title": "Blue",
					"value": "3"
				}
			]
		},
		{
			"type": "Input.ChoiceSet",
			"id": "myColor3",
			"isMultiSelect": true,
			"value": "1,3",
			"style": "compact",
			"label": "What colors do you want? (isMultiSelect:true, style:compact)",
			"choices": [
				{
					"title": "Red",
					"value": "1"
				},
				{
					"title": "Green",
					"value": "2"
				},
				{
					"title": "Blue",
					"value": "3"
				}
			]
		},
		{
			"type": "Input.ChoiceSet",
			"id": "myColor4",
			"isMultiSelect": true,
			"value": "1",
			"style": "expanded",
			"label": "What colors do you want? (isMultiSelect:true, style:expanded)",
			"choices": [
				{
					"title": "Red",
					"value": "1"
				},
				{
					"title": "Green",
					"value": "2"
				},
				{
					"title": "Blue",
					"value": "3"
				}
			]
		}
	],
	"actions": [
		{
			"type": "Action.Submit",
			"title": "OK"
		}
	]
}
Adaptive Card

Properties

choices

Choice options.

  • Type: Input.Choice[]
  • Required: No
  • Allowed values:
    • Input.Choice

choices.data

Allows dynamic fetching of choices from the bot to be displayed as suggestions in the dropdown when the user types in the input field.

  • Type: Data.Query
  • Version : 1.6
  • Required: No
  • Allowed values:
    • Data.Query

isMultiSelect

Allow multiple choices to be selected.

  • Type: boolean
  • Required: No

style

  • Type: ChoiceInputStyle
  • Required: No
  • Allowed values:
    • "compact"
    • "expanded"
    • "filtered": Added in version 1.5. Allows users to filter choices in a choice set.

value

The initial choice (or set of choices) that should be selected. For multi-select, specify a comma-separated string of values.

  • Type: string
  • Required: No

placeholder

Description of the input desired. Only visible when no selection has been made, the style is compact and isMultiSelect is false

  • Type: string
  • Required: No
JSON
{
    "type": "AdaptiveCard",
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.3",
    "body": [
        {
			"type": "Input.ChoiceSet",
			"id": "CompactSelectVal",
			"label": "What color do you want? (compact)",
			"style": "compact",
			"isRequired": true,
			"errorMessage": "This is a required input",
			"placeholder": "Please choose",
			"choices": [
				{
					"title": "Red",
					"value": "1"
				},
				{
					"title": "Green",
					"value": "2"
				},
				{
					"title": "Blue",
					"value": "3"
				}
			]
		}
    ],
	"actions": [
		{
			"type": "Action.Submit",
			"title": "OK"
		}
	]
}
Adaptive Card

wrap

If true, allow text to wrap. Otherwise, text is clipped.

  • Type: boolean
  • Version : 1.2
  • Required: No

id

Unique identifier for the value. Used to identify collected input when the Submit action is performed.

  • Type: string
  • Required: Yes

errorMessage

Error message to display when entered input is invalid

  • Type: string
  • Version : 1.3
  • Required: No
JSON
{
	"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
	"type": "AdaptiveCard",
	"version": "1.3",
	"body": [
		{
			"type": "Input.ChoiceSet",
			"id": "requiredCompactId",
			"style": "compact",
			"isMultiSelect": false,
			"label": "Required Input.ChoiceSet label (compact)",
			"isRequired": true,
			"errorMessage": "This is a required input",
			"placeholder" : "Please make selection",
			"choices": [
				{
					"title": "Option 1",
					"value": "1"
				},
				{
					"title": "Option 2",
					"value": "2"
				}
			]
		},
		{
			"type": "Input.ChoiceSet",
			"id": "requiredExpandedId",
			"style": "expanded",
			"isMultiSelect": false,
			"label": "Required Input.ChoiceSet label (expanded)",
			"isRequired": true,
			"errorMessage": "This is a required input",
			"choices": [
				{
					"title": "Option 1",
					"value": "1"
				},
				{
					"title": "Option 2",
					"value": "2"
				}
			]
		},
		{
			"type": "Input.ChoiceSet",
			"id": "requiredMultiselectId",
			"style": "expanded",
			"isMultiSelect": true,
			"label": "Required Input.ChoiceSet label (expanded, multiselect)",
			"isRequired": true,
			"errorMessage": "This is a required input",
			"choices": [
				{
					"title": "Option 1",
					"value": "1"
				},
				{
					"title": "Option 2",
					"value": "2"
				}
			]
		}
	],
	"actions": [
		{
			"type": "Action.Submit",
			"title": "OK"
		}
	]
}
Adaptive Card

isRequired

Whether or not this input is required

  • Type: boolean
  • Version : 1.3
  • Required: No

label

Label for this input

  • Type: string
  • Version : 1.3
  • Required: No
JSON
{
	"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
	"type": "AdaptiveCard",
	"version": "1.3",
	"body": [
		{
			"type": "Input.ChoiceSet",
			"id": "input1",
			"style": "compact",
			"isMultiSelect": false,
			"label": "Default Input.ChoiceSet label (compact)",
			"choices": [
				{
					"title": "Option 1",
					"value": "1"
				},
				{
					"title": "Option 2",
					"value": "2"
				}
			]
		},
		{
			"type": "Input.ChoiceSet",
			"id": "input2",
			"style": "compact",
			"isMultiSelect": false,
			"label": "Required Input.ChoiceSet label (compact)",
			"isRequired": true,
			"errorMessage": "Required input",
			"choices": [
				{
					"title": "Option 1",
					"value": "1"
				},
				{
					"title": "Option 2",
					"value": "2"
				}
			]
		},
		{
			"type": "Input.ChoiceSet",
			"id": "input3",
			"style": "expanded",
			"isMultiSelect": false,
			"label": "Default Input.ChoiceSet label (expanded)",
			"choices": [
				{
					"title": "Option 1",
					"value": "1"
				},
				{
					"title": "Option 2",
					"value": "2"
				}
			]
		},
		{
			"type": "Input.ChoiceSet",
			"id": "input4",
			"style": "expanded",
			"isMultiSelect": false,
			"label": "Required Input.ChoiceSet label (expanded)",
			"isRequired": true,
			"errorMessage": "Required input",
			"choices": [
				{
					"title": "Option 1",
					"value": "1"
				},
				{
					"title": "Option 2",
					"value": "2"
				}
			]
		},
		{
			"type": "Input.ChoiceSet",
			"id": "input5",
			"style": "expanded",
			"isMultiSelect": true,
			"label": "Default Input.ChoiceSet label (expanded, multiselect)",
			"choices": [
				{
					"title": "Option 1",
					"value": "1"
				},
				{
					"title": "Option 2",
					"value": "2"
				}
			]
		},
		{
			"type": "Input.ChoiceSet",
			"id": "input6",
			"style": "expanded",
			"isMultiSelect": true,
			"isRequired": true,
			"label": "Required Input.ChoiceSet label (expanded, multiselect)",
			"errorMessage": "Required input",
			"choices": [
				{
					"title": "Option 1",
					"value": "1"
				},
				{
					"title": "Option 2",
					"value": "2"
				}
			]
		}
	],
	"actions": [
		{
			"type": "Action.Submit",
			"title": "OK"
		}
	]
}
Adaptive Card

labelPosition

[SUPPORTED ONLY IN JAVASCRIPT SDK] Determines the position of the label. It can take 'inline' and 'above' values. By default, the label is placed 'above' when label position is not specified.

  • Type: InputLabelPosition
  • Version : 1.6
  • Required: No
  • Allowed values:
    • "inline"
    • "above"

labelWidth

[SUPPORTED ONLY IN JAVASCRIPT SDK] Determines the width of the label in percent like 40 or a specific pixel width like '40px' when label is placed inline with the input. labelWidth would be ignored when the label is displayed above the input.

  • Type: string, number
  • Version : 1.6
  • Required: No

inputStyle

[SUPPORTED ONLY IN JAVASCRIPT SDK] Style hint for input fields. Allows input fields to appear as read-only but when user clicks/focuses on the field, it allows them to update those fields.

  • Type: InputStyle
  • Version : 1.6
  • Required: No
  • Allowed values:
    • "revealOnHover"
    • "default"

fallback

Describes what to do when an unknown element is encountered or the requires of this or any children can't be met.

  • Type: Element, FallbackOption
  • Version : 1.2
  • Required: No
  • Allowed values:
    • ActionSet
    • ColumnSet
    • Container
    • FactSet
    • Image
    • ImageSet
    • Input.ChoiceSet
    • Input.Date
    • Input.Number
    • Input.Text
    • Input.Time
    • Input.Toggle
    • Media
    • RichTextBlock
    • Table
    • TextBlock
    • "drop": Causes this element to be dropped immediately when unknown elements are encountered. The unknown element doesn't bubble up any higher.

height

Specifies the height of the element.

  • Type: BlockElementHeight
  • Version : 1.1
  • Required: No
  • Allowed values:
    • "auto": The height of the container will be determined by the height of its contents.
    • "stretch": The container will stretch its height to the available remaining height of the parent container.

separator

When true, draw a separating line at the top of the element.

  • Type: boolean
  • Required: No

spacing

Controls the amount of spacing between this element and the preceding element.

  • Type: Spacing
  • Required: No
  • Allowed values:
    • "default"
    • "none"
    • "small"
    • "medium"
    • "large"
    • "extraLarge"
    • "padding"

isVisible

If false, this item will be removed from the visual tree.

  • Type: boolean
  • Version : 1.2
  • Required: No, default: true

requires

A series of key/value pairs indicating features that the item requires with corresponding minimum version. When a feature is missing or of insufficient version, fallback is triggered.

  • Type: Dictionary<string>
  • Version : 1.2
  • Required: No