diff --git a/Libraries/Microsoft.Teams.Cards/Actions/IMBackAction.cs b/Libraries/Microsoft.Teams.Cards/Actions/IMBackAction.cs index ebe6cd54..31ed445a 100644 --- a/Libraries/Microsoft.Teams.Cards/Actions/IMBackAction.cs +++ b/Libraries/Microsoft.Teams.Cards/Actions/IMBackAction.cs @@ -5,6 +5,10 @@ namespace Microsoft.Teams.Cards; +/// +/// This class is deprecated. Please use instead. This will be removed in a future version of the SDK. +/// +[Obsolete("This class is deprecated. Use ImBackSubmitActionData instead. This will be removed in a future version of the SDK.")] public class IMBackAction : SubmitAction { /// diff --git a/Libraries/Microsoft.Teams.Cards/Actions/InvokeAction.cs b/Libraries/Microsoft.Teams.Cards/Actions/InvokeAction.cs index c416cf55..9009b8d2 100644 --- a/Libraries/Microsoft.Teams.Cards/Actions/InvokeAction.cs +++ b/Libraries/Microsoft.Teams.Cards/Actions/InvokeAction.cs @@ -6,8 +6,9 @@ namespace Microsoft.Teams.Cards; /// -/// Defines an invoke action. This action is used to trigger a bot action. +/// This class is deprecated. Please use instead. This will be removed in a future version of the SDK. /// +[Obsolete("This class is deprecated. Use InvokeSubmitActionData instead. This will be removed in a future version of the SDK.")] public class InvokeAction : SubmitAction { /// @@ -18,7 +19,7 @@ public InvokeAction(object value) { Data = new Union(new SubmitActionData { - Msteams = new InvokeSubmitActionData(value) + Msteams = new InvokeSubmitActionData(new Union(value)) }); } } \ No newline at end of file diff --git a/Libraries/Microsoft.Teams.Cards/Actions/MessageBackAction.cs b/Libraries/Microsoft.Teams.Cards/Actions/MessageBackAction.cs index 4628f120..207b0889 100644 --- a/Libraries/Microsoft.Teams.Cards/Actions/MessageBackAction.cs +++ b/Libraries/Microsoft.Teams.Cards/Actions/MessageBackAction.cs @@ -5,6 +5,10 @@ namespace Microsoft.Teams.Cards; +/// +/// This class is deprecated. Please use instead. This will be removed in a future version of the SDK. +/// +[Obsolete("This class is deprecated. Use MessageBackSubmitActionData instead. This will be removed in a future version of the SDK.")] public class MessageBackAction : SubmitAction { public MessageBackAction(string text, string value) diff --git a/Libraries/Microsoft.Teams.Cards/Actions/SignInAction.cs b/Libraries/Microsoft.Teams.Cards/Actions/SignInAction.cs index bf5cd4ec..bd614523 100644 --- a/Libraries/Microsoft.Teams.Cards/Actions/SignInAction.cs +++ b/Libraries/Microsoft.Teams.Cards/Actions/SignInAction.cs @@ -5,6 +5,10 @@ namespace Microsoft.Teams.Cards; +/// +/// This class is deprecated. Please use instead. This will be removed in a future version of the SDK. +/// +[Obsolete("This class is deprecated. Use SigninSubmitActionData instead. This will be removed in a future version of the SDK.")] public class SignInAction : SubmitAction { public SignInAction(string value) diff --git a/Libraries/Microsoft.Teams.Cards/Actions/TaskFetchAction.cs b/Libraries/Microsoft.Teams.Cards/Actions/TaskFetchAction.cs index 8b4bf71b..a55e1262 100644 --- a/Libraries/Microsoft.Teams.Cards/Actions/TaskFetchAction.cs +++ b/Libraries/Microsoft.Teams.Cards/Actions/TaskFetchAction.cs @@ -5,6 +5,10 @@ namespace Microsoft.Teams.Cards; +/// +/// This class is deprecated. Please use instead. This will be removed in a future version of the SDK. +/// +[Obsolete("This class is deprecated. Use TaskFetchSubmitActionData instead. This will be removed in a future version of the SDK.")] public class TaskFetchAction : SubmitAction { public TaskFetchAction(IDictionary? value = null) diff --git a/Libraries/Microsoft.Teams.Cards/Core.cs b/Libraries/Microsoft.Teams.Cards/Core.cs index 5605bb3f..72a48996 100644 --- a/Libraries/Microsoft.Teams.Cards/Core.cs +++ b/Libraries/Microsoft.Teams.Cards/Core.cs @@ -1,4 +1,4 @@ -// This file was automatically generated by a tool on 09/16/2025, 10:37 PM UTC. DO NOT UPDATE MANUALLY. +// This file was automatically generated by a tool on 03/19/2026, 9:27 PM UTC. DO NOT UPDATE MANUALLY. // It includes declarations for Adaptive Card features available in Teams, Copilot, Outlook, Word, Excel, PowerPoint. #pragma warning disable IDE0290 @@ -33,56 +33,65 @@ public class ActionMode(string value) : StringEnum(value, caseSensitive: false) public bool IsSecondary => Secondary.Equals(Value); } -[JsonConverter(typeof(JsonConverter))] -public class AssociatedInputs(string value) : StringEnum(value, caseSensitive: false) +[JsonConverter(typeof(JsonConverter))] +public class ThemeName(string value) : StringEnum(value, caseSensitive: false) { - public static readonly AssociatedInputs Auto = new("auto"); - public bool IsAuto => Auto.Equals(Value); + public static readonly ThemeName Light = new("Light"); + public bool IsLight => Light.Equals(Value); - public static readonly AssociatedInputs None = new("none"); - public bool IsNone => None.Equals(Value); + public static readonly ThemeName Dark = new("Dark"); + public bool IsDark => Dark.Equals(Value); } -[JsonConverter(typeof(JsonConverter))] -public class ImageInsertPosition(string value) : StringEnum(value, caseSensitive: false) +[JsonConverter(typeof(JsonConverter))] +public class ElementHeight(string value) : StringEnum(value, caseSensitive: false) { - public static readonly ImageInsertPosition Selection = new("Selection"); - public bool IsSelection => Selection.Equals(Value); - - public static readonly ImageInsertPosition Top = new("Top"); - public bool IsTop => Top.Equals(Value); + public static readonly ElementHeight Auto = new("auto"); + public bool IsAuto => Auto.Equals(Value); - public static readonly ImageInsertPosition Bottom = new("Bottom"); - public bool IsBottom => Bottom.Equals(Value); + public static readonly ElementHeight Stretch = new("stretch"); + public bool IsStretch => Stretch.Equals(Value); } -[JsonConverter(typeof(JsonConverter))] -public class FallbackAction(string value) : StringEnum(value, caseSensitive: false) +[JsonConverter(typeof(JsonConverter))] +public class HorizontalAlignment(string value) : StringEnum(value, caseSensitive: false) { - public static readonly FallbackAction Drop = new("drop"); - public bool IsDrop => Drop.Equals(Value); + public static readonly HorizontalAlignment Left = new("Left"); + public bool IsLeft => Left.Equals(Value); + + public static readonly HorizontalAlignment Center = new("Center"); + public bool IsCenter => Center.Equals(Value); + + public static readonly HorizontalAlignment Right = new("Right"); + public bool IsRight => Right.Equals(Value); } -[JsonConverter(typeof(JsonConverter))] -public class ContainerStyle(string value) : StringEnum(value, caseSensitive: false) +[JsonConverter(typeof(JsonConverter))] +public class Spacing(string value) : StringEnum(value, caseSensitive: false) { - public static readonly ContainerStyle Default = new("default"); - public bool IsDefault => Default.Equals(Value); + public static readonly Spacing None = new("None"); + public bool IsNone => None.Equals(Value); - public static readonly ContainerStyle Emphasis = new("emphasis"); - public bool IsEmphasis => Emphasis.Equals(Value); + public static readonly Spacing ExtraSmall = new("ExtraSmall"); + public bool IsExtraSmall => ExtraSmall.Equals(Value); - public static readonly ContainerStyle Accent = new("accent"); - public bool IsAccent => Accent.Equals(Value); + public static readonly Spacing Small = new("Small"); + public bool IsSmall => Small.Equals(Value); - public static readonly ContainerStyle Good = new("good"); - public bool IsGood => Good.Equals(Value); + public static readonly Spacing Default = new("Default"); + public bool IsDefault => Default.Equals(Value); - public static readonly ContainerStyle Attention = new("attention"); - public bool IsAttention => Attention.Equals(Value); + public static readonly Spacing Medium = new("Medium"); + public bool IsMedium => Medium.Equals(Value); - public static readonly ContainerStyle Warning = new("warning"); - public bool IsWarning => Warning.Equals(Value); + public static readonly Spacing Large = new("Large"); + public bool IsLarge => Large.Equals(Value); + + public static readonly Spacing ExtraLarge = new("ExtraLarge"); + public bool IsExtraLarge => ExtraLarge.Equals(Value); + + public static readonly Spacing Padding = new("Padding"); + public bool IsPadding => Padding.Equals(Value); } [JsonConverter(typeof(JsonConverter))] @@ -125,17 +134,26 @@ public class TargetWidth(string value) : StringEnum(value, caseSensitive: false) public bool IsAtMostWide => AtMostWide.Equals(Value); } -[JsonConverter(typeof(JsonConverter))] -public class HorizontalAlignment(string value) : StringEnum(value, caseSensitive: false) +[JsonConverter(typeof(JsonConverter))] +public class ContainerStyle(string value) : StringEnum(value, caseSensitive: false) { - public static readonly HorizontalAlignment Left = new("Left"); - public bool IsLeft => Left.Equals(Value); + public static readonly ContainerStyle Default = new("default"); + public bool IsDefault => Default.Equals(Value); - public static readonly HorizontalAlignment Center = new("Center"); - public bool IsCenter => Center.Equals(Value); + public static readonly ContainerStyle Emphasis = new("emphasis"); + public bool IsEmphasis => Emphasis.Equals(Value); - public static readonly HorizontalAlignment Right = new("Right"); - public bool IsRight => Right.Equals(Value); + public static readonly ContainerStyle Accent = new("accent"); + public bool IsAccent => Accent.Equals(Value); + + public static readonly ContainerStyle Good = new("good"); + public bool IsGood => Good.Equals(Value); + + public static readonly ContainerStyle Attention = new("attention"); + public bool IsAttention => Attention.Equals(Value); + + public static readonly ContainerStyle Warning = new("warning"); + public bool IsWarning => Warning.Equals(Value); } [JsonConverter(typeof(JsonConverter))] @@ -161,34 +179,6 @@ public class FlowLayoutItemFit(string value) : StringEnum(value, caseSensitive: public bool IsFill => Fill.Equals(Value); } -[JsonConverter(typeof(JsonConverter))] -public class Spacing(string value) : StringEnum(value, caseSensitive: false) -{ - public static readonly Spacing None = new("None"); - public bool IsNone => None.Equals(Value); - - public static readonly Spacing ExtraSmall = new("ExtraSmall"); - public bool IsExtraSmall => ExtraSmall.Equals(Value); - - public static readonly Spacing Small = new("Small"); - public bool IsSmall => Small.Equals(Value); - - public static readonly Spacing Default = new("Default"); - public bool IsDefault => Default.Equals(Value); - - public static readonly Spacing Medium = new("Medium"); - public bool IsMedium => Medium.Equals(Value); - - public static readonly Spacing Large = new("Large"); - public bool IsLarge => Large.Equals(Value); - - public static readonly Spacing ExtraLarge = new("ExtraLarge"); - public bool IsExtraLarge => ExtraLarge.Equals(Value); - - public static readonly Spacing Padding = new("Padding"); - public bool IsPadding => Padding.Equals(Value); -} - [JsonConverter(typeof(JsonConverter))] public class FillMode(string value) : StringEnum(value, caseSensitive: false) { @@ -205,58 +195,6 @@ public class FillMode(string value) : StringEnum(value, caseSensitive: false) public bool IsRepeat => Repeat.Equals(Value); } -[JsonConverter(typeof(JsonConverter))] -public class Version(string value) : StringEnum(value, caseSensitive: false) -{ - public static readonly Version Version1_0 = new("1.0"); - public bool IsVersion1_0 => Version1_0.Equals(Value); - - public static readonly Version Version1_1 = new("1.1"); - public bool IsVersion1_1 => Version1_1.Equals(Value); - - public static readonly Version Version1_2 = new("1.2"); - public bool IsVersion1_2 => Version1_2.Equals(Value); - - public static readonly Version Version1_3 = new("1.3"); - public bool IsVersion1_3 => Version1_3.Equals(Value); - - public static readonly Version Version1_4 = new("1.4"); - public bool IsVersion1_4 => Version1_4.Equals(Value); - - public static readonly Version Version1_5 = new("1.5"); - public bool IsVersion1_5 => Version1_5.Equals(Value); - - public static readonly Version Version1_6 = new("1.6"); - public bool IsVersion1_6 => Version1_6.Equals(Value); -} - -[JsonConverter(typeof(JsonConverter))] -public class TeamsCardWidth(string value) : StringEnum(value, caseSensitive: false) -{ - public static readonly TeamsCardWidth Full = new("full"); - public bool IsFull => Full.Equals(Value); -} - -[JsonConverter(typeof(JsonConverter))] -public class MentionType(string value) : StringEnum(value, caseSensitive: false) -{ - public static readonly MentionType Person = new("Person"); - public bool IsPerson => Person.Equals(Value); - - public static readonly MentionType Tag = new("Tag"); - public bool IsTag => Tag.Equals(Value); -} - -[JsonConverter(typeof(JsonConverter))] -public class ElementHeight(string value) : StringEnum(value, caseSensitive: false) -{ - public static readonly ElementHeight Auto = new("auto"); - public bool IsAuto => Auto.Equals(Value); - - public static readonly ElementHeight Stretch = new("stretch"); - public bool IsStretch => Stretch.Equals(Value); -} - [JsonConverter(typeof(JsonConverter))] public class TextSize(string value) : StringEnum(value, caseSensitive: false) { @@ -324,17 +262,17 @@ public class FontType(string value) : StringEnum(value, caseSensitive: false) public bool IsMonospace => Monospace.Equals(Value); } -[JsonConverter(typeof(JsonConverter))] -public class StyleEnum(string value) : StringEnum(value, caseSensitive: false) +[JsonConverter(typeof(JsonConverter))] +public class TextBlockStyle(string value) : StringEnum(value, caseSensitive: false) { - public static readonly StyleEnum Compact = new("compact"); - public bool IsCompact => Compact.Equals(Value); + public static readonly TextBlockStyle Default = new("default"); + public bool IsDefault => Default.Equals(Value); - public static readonly StyleEnum Expanded = new("expanded"); - public bool IsExpanded => Expanded.Equals(Value); + public static readonly TextBlockStyle ColumnHeader = new("columnHeader"); + public bool IsColumnHeader => ColumnHeader.Equals(Value); - public static readonly StyleEnum Filtered = new("filtered"); - public bool IsFiltered => Filtered.Equals(Value); + public static readonly TextBlockStyle Heading = new("heading"); + public bool IsHeading => Heading.Equals(Value); } [JsonConverter(typeof(JsonConverter))] @@ -369,6 +307,19 @@ public class Size(string value) : StringEnum(value, caseSensitive: false) public bool IsLarge => Large.Equals(Value); } +[JsonConverter(typeof(JsonConverter))] +public class ImageFitMode(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly ImageFitMode Cover = new("Cover"); + public bool IsCover => Cover.Equals(Value); + + public static readonly ImageFitMode Contain = new("Contain"); + public bool IsContain => Contain.Equals(Value); + + public static readonly ImageFitMode Fill = new("Fill"); + public bool IsFill => Fill.Equals(Value); +} + [JsonConverter(typeof(JsonConverter))] public class InputTextStyle(string value) : StringEnum(value, caseSensitive: false) { @@ -388,6 +339,29 @@ public class InputTextStyle(string value) : StringEnum(value, caseSensitive: fal public bool IsPassword => Password.Equals(Value); } +[JsonConverter(typeof(JsonConverter))] +public class AssociatedInputs(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly AssociatedInputs Auto = new("auto"); + public bool IsAuto => Auto.Equals(Value); + + public static readonly AssociatedInputs None = new("none"); + public bool IsNone => None.Equals(Value); +} + +[JsonConverter(typeof(JsonConverter))] +public class ChoiceSetInputStyle(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly ChoiceSetInputStyle Compact = new("compact"); + public bool IsCompact => Compact.Equals(Value); + + public static readonly ChoiceSetInputStyle Expanded = new("expanded"); + public bool IsExpanded => Expanded.Equals(Value); + + public static readonly ChoiceSetInputStyle Filtered = new("filtered"); + public bool IsFiltered => Filtered.Equals(Value); +} + [JsonConverter(typeof(JsonConverter))] public class RatingSize(string value) : StringEnum(value, caseSensitive: false) { @@ -540,6 +514,54 @@ public class BadgeStyle(string value) : StringEnum(value, caseSensitive: false) public bool IsWarning => Warning.Equals(Value); } +[JsonConverter(typeof(JsonConverter))] +public class ProgressRingLabelPosition(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly ProgressRingLabelPosition Before = new("Before"); + public bool IsBefore => Before.Equals(Value); + + public static readonly ProgressRingLabelPosition After = new("After"); + public bool IsAfter => After.Equals(Value); + + public static readonly ProgressRingLabelPosition Above = new("Above"); + public bool IsAbove => Above.Equals(Value); + + public static readonly ProgressRingLabelPosition Below = new("Below"); + public bool IsBelow => Below.Equals(Value); +} + +[JsonConverter(typeof(JsonConverter))] +public class ProgressRingSize(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly ProgressRingSize Tiny = new("Tiny"); + public bool IsTiny => Tiny.Equals(Value); + + public static readonly ProgressRingSize Small = new("Small"); + public bool IsSmall => Small.Equals(Value); + + public static readonly ProgressRingSize Medium = new("Medium"); + public bool IsMedium => Medium.Equals(Value); + + public static readonly ProgressRingSize Large = new("Large"); + public bool IsLarge => Large.Equals(Value); +} + +[JsonConverter(typeof(JsonConverter))] +public class ProgressBarColor(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly ProgressBarColor Accent = new("Accent"); + public bool IsAccent => Accent.Equals(Value); + + public static readonly ProgressBarColor Good = new("Good"); + public bool IsGood => Good.Equals(Value); + + public static readonly ProgressBarColor Warning = new("Warning"); + public bool IsWarning => Warning.Equals(Value); + + public static readonly ProgressBarColor Attention = new("Attention"); + public bool IsAttention => Attention.Equals(Value); +} + [JsonConverter(typeof(JsonConverter))] public class ChartColorSet(string value) : StringEnum(value, caseSensitive: false) { @@ -549,6 +571,15 @@ public class ChartColorSet(string value) : StringEnum(value, caseSensitive: fals public static readonly ChartColorSet Sequential = new("sequential"); public bool IsSequential => Sequential.Equals(Value); + public static readonly ChartColorSet Sequentialred = new("sequentialred"); + public bool IsSequentialred => Sequentialred.Equals(Value); + + public static readonly ChartColorSet Sequentialgreen = new("sequentialgreen"); + public bool IsSequentialgreen => Sequentialgreen.Equals(Value); + + public static readonly ChartColorSet Sequentialyellow = new("sequentialyellow"); + public bool IsSequentialyellow => Sequentialyellow.Equals(Value); + public static readonly ChartColorSet Diverging = new("diverging"); public bool IsDiverging => Diverging.Equals(Value); } @@ -648,28 +679,110 @@ public class ChartColor(string value) : StringEnum(value, caseSensitive: false) public static readonly ChartColor DivergingGray = new("divergingGray"); public bool IsDivergingGray => DivergingGray.Equals(Value); -} -[JsonConverter(typeof(JsonConverter))] -public class HorizontalBarChartDisplayMode(string value) : StringEnum(value, caseSensitive: false) -{ - public static readonly HorizontalBarChartDisplayMode AbsoluteWithAxis = new("AbsoluteWithAxis"); - public bool IsAbsoluteWithAxis => AbsoluteWithAxis.Equals(Value); + public static readonly ChartColor SequentialRed1 = new("sequentialRed1"); + public bool IsSequentialRed1 => SequentialRed1.Equals(Value); - public static readonly HorizontalBarChartDisplayMode AbsoluteNoAxis = new("AbsoluteNoAxis"); - public bool IsAbsoluteNoAxis => AbsoluteNoAxis.Equals(Value); + public static readonly ChartColor SequentialRed2 = new("sequentialRed2"); + public bool IsSequentialRed2 => SequentialRed2.Equals(Value); - public static readonly HorizontalBarChartDisplayMode PartToWhole = new("PartToWhole"); - public bool IsPartToWhole => PartToWhole.Equals(Value); -} + public static readonly ChartColor SequentialRed3 = new("sequentialRed3"); + public bool IsSequentialRed3 => SequentialRed3.Equals(Value); -[JsonConverter(typeof(JsonConverter))] -public class GaugeChartValueFormat(string value) : StringEnum(value, caseSensitive: false) -{ - public static readonly GaugeChartValueFormat Percentage = new("Percentage"); - public bool IsPercentage => Percentage.Equals(Value); + public static readonly ChartColor SequentialRed4 = new("sequentialRed4"); + public bool IsSequentialRed4 => SequentialRed4.Equals(Value); - public static readonly GaugeChartValueFormat Fraction = new("Fraction"); + public static readonly ChartColor SequentialRed5 = new("sequentialRed5"); + public bool IsSequentialRed5 => SequentialRed5.Equals(Value); + + public static readonly ChartColor SequentialRed6 = new("sequentialRed6"); + public bool IsSequentialRed6 => SequentialRed6.Equals(Value); + + public static readonly ChartColor SequentialRed7 = new("sequentialRed7"); + public bool IsSequentialRed7 => SequentialRed7.Equals(Value); + + public static readonly ChartColor SequentialRed8 = new("sequentialRed8"); + public bool IsSequentialRed8 => SequentialRed8.Equals(Value); + + public static readonly ChartColor SequentialGreen1 = new("sequentialGreen1"); + public bool IsSequentialGreen1 => SequentialGreen1.Equals(Value); + + public static readonly ChartColor SequentialGreen2 = new("sequentialGreen2"); + public bool IsSequentialGreen2 => SequentialGreen2.Equals(Value); + + public static readonly ChartColor SequentialGreen3 = new("sequentialGreen3"); + public bool IsSequentialGreen3 => SequentialGreen3.Equals(Value); + + public static readonly ChartColor SequentialGreen4 = new("sequentialGreen4"); + public bool IsSequentialGreen4 => SequentialGreen4.Equals(Value); + + public static readonly ChartColor SequentialGreen5 = new("sequentialGreen5"); + public bool IsSequentialGreen5 => SequentialGreen5.Equals(Value); + + public static readonly ChartColor SequentialGreen6 = new("sequentialGreen6"); + public bool IsSequentialGreen6 => SequentialGreen6.Equals(Value); + + public static readonly ChartColor SequentialGreen7 = new("sequentialGreen7"); + public bool IsSequentialGreen7 => SequentialGreen7.Equals(Value); + + public static readonly ChartColor SequentialGreen8 = new("sequentialGreen8"); + public bool IsSequentialGreen8 => SequentialGreen8.Equals(Value); + + public static readonly ChartColor SequentialYellow1 = new("sequentialYellow1"); + public bool IsSequentialYellow1 => SequentialYellow1.Equals(Value); + + public static readonly ChartColor SequentialYellow2 = new("sequentialYellow2"); + public bool IsSequentialYellow2 => SequentialYellow2.Equals(Value); + + public static readonly ChartColor SequentialYellow3 = new("sequentialYellow3"); + public bool IsSequentialYellow3 => SequentialYellow3.Equals(Value); + + public static readonly ChartColor SequentialYellow4 = new("sequentialYellow4"); + public bool IsSequentialYellow4 => SequentialYellow4.Equals(Value); + + public static readonly ChartColor SequentialYellow5 = new("sequentialYellow5"); + public bool IsSequentialYellow5 => SequentialYellow5.Equals(Value); + + public static readonly ChartColor SequentialYellow6 = new("sequentialYellow6"); + public bool IsSequentialYellow6 => SequentialYellow6.Equals(Value); + + public static readonly ChartColor SequentialYellow7 = new("sequentialYellow7"); + public bool IsSequentialYellow7 => SequentialYellow7.Equals(Value); + + public static readonly ChartColor SequentialYellow8 = new("sequentialYellow8"); + public bool IsSequentialYellow8 => SequentialYellow8.Equals(Value); +} + +[JsonConverter(typeof(JsonConverter))] +public class DonutThickness(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly DonutThickness Thin = new("Thin"); + public bool IsThin => Thin.Equals(Value); + + public static readonly DonutThickness Thick = new("Thick"); + public bool IsThick => Thick.Equals(Value); +} + +[JsonConverter(typeof(JsonConverter))] +public class HorizontalBarChartDisplayMode(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly HorizontalBarChartDisplayMode AbsoluteWithAxis = new("AbsoluteWithAxis"); + public bool IsAbsoluteWithAxis => AbsoluteWithAxis.Equals(Value); + + public static readonly HorizontalBarChartDisplayMode AbsoluteNoAxis = new("AbsoluteNoAxis"); + public bool IsAbsoluteNoAxis => AbsoluteNoAxis.Equals(Value); + + public static readonly HorizontalBarChartDisplayMode PartToWhole = new("PartToWhole"); + public bool IsPartToWhole => PartToWhole.Equals(Value); +} + +[JsonConverter(typeof(JsonConverter))] +public class GaugeChartValueFormat(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly GaugeChartValueFormat Percentage = new("Percentage"); + public bool IsPercentage => Percentage.Equals(Value); + + public static readonly GaugeChartValueFormat Fraction = new("Fraction"); public bool IsFraction => Fraction.Equals(Value); } @@ -749,6 +862,32 @@ public class CodeLanguage(string value) : StringEnum(value, caseSensitive: false public bool IsXml => Xml.Equals(Value); } +[JsonConverter(typeof(JsonConverter))] +public class PersonaIconStyle(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly PersonaIconStyle ProfilePicture = new("profilePicture"); + public bool IsProfilePicture => ProfilePicture.Equals(Value); + + public static readonly PersonaIconStyle ContactCard = new("contactCard"); + public bool IsContactCard => ContactCard.Equals(Value); + + public static readonly PersonaIconStyle None = new("none"); + public bool IsNone => None.Equals(Value); +} + +[JsonConverter(typeof(JsonConverter))] +public class PersonaDisplayStyle(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly PersonaDisplayStyle IconAndName = new("iconAndName"); + public bool IsIconAndName => IconAndName.Equals(Value); + + public static readonly PersonaDisplayStyle IconOnly = new("iconOnly"); + public bool IsIconOnly => IconOnly.Equals(Value); + + public static readonly PersonaDisplayStyle NameOnly = new("nameOnly"); + public bool IsNameOnly => NameOnly.Equals(Value); +} + [JsonConverter(typeof(JsonConverter))] public class FallbackElement(string value) : StringEnum(value, caseSensitive: false) { @@ -788,14 +927,82 @@ public class SizeEnum(string value) : StringEnum(value, caseSensitive: false) public bool IsExtraLarge => ExtraLarge.Equals(Value); } -[JsonConverter(typeof(JsonConverter))] -public class ThemeName(string value) : StringEnum(value, caseSensitive: false) +[JsonConverter(typeof(JsonConverter))] +public class PopoverPosition(string value) : StringEnum(value, caseSensitive: false) { - public static readonly ThemeName Light = new("Light"); - public bool IsLight => Light.Equals(Value); + public static readonly PopoverPosition Above = new("Above"); + public bool IsAbove => Above.Equals(Value); - public static readonly ThemeName Dark = new("Dark"); - public bool IsDark => Dark.Equals(Value); + public static readonly PopoverPosition Below = new("Below"); + public bool IsBelow => Below.Equals(Value); + + public static readonly PopoverPosition Before = new("Before"); + public bool IsBefore => Before.Equals(Value); + + public static readonly PopoverPosition After = new("After"); + public bool IsAfter => After.Equals(Value); +} + +[JsonConverter(typeof(JsonConverter))] +public class FallbackAction(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly FallbackAction Drop = new("drop"); + public bool IsDrop => Drop.Equals(Value); +} + +[JsonConverter(typeof(JsonConverter))] +public class ImageInsertPosition(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly ImageInsertPosition Selection = new("Selection"); + public bool IsSelection => Selection.Equals(Value); + + public static readonly ImageInsertPosition Top = new("Top"); + public bool IsTop => Top.Equals(Value); + + public static readonly ImageInsertPosition Bottom = new("Bottom"); + public bool IsBottom => Bottom.Equals(Value); +} + +[JsonConverter(typeof(JsonConverter))] +public class Version(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly Version Version1_0 = new("1.0"); + public bool IsVersion1_0 => Version1_0.Equals(Value); + + public static readonly Version Version1_1 = new("1.1"); + public bool IsVersion1_1 => Version1_1.Equals(Value); + + public static readonly Version Version1_2 = new("1.2"); + public bool IsVersion1_2 => Version1_2.Equals(Value); + + public static readonly Version Version1_3 = new("1.3"); + public bool IsVersion1_3 => Version1_3.Equals(Value); + + public static readonly Version Version1_4 = new("1.4"); + public bool IsVersion1_4 => Version1_4.Equals(Value); + + public static readonly Version Version1_5 = new("1.5"); + public bool IsVersion1_5 => Version1_5.Equals(Value); + + public static readonly Version Version1_6 = new("1.6"); + public bool IsVersion1_6 => Version1_6.Equals(Value); +} + +[JsonConverter(typeof(JsonConverter))] +public class TeamsCardWidth(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly TeamsCardWidth Full = new("full"); + public bool IsFull => Full.Equals(Value); +} + +[JsonConverter(typeof(JsonConverter))] +public class MentionType(string value) : StringEnum(value, caseSensitive: false) +{ + public static readonly MentionType Person = new("Person"); + public bool IsPerson => Person.Equals(Value); + + public static readonly MentionType Tag = new("Tag"); + public bool IsTag => Tag.Equals(Value); } internal record ObjectType(string[] DiscriminatorPropertyNames, string DiscriminatorValue, Type Type) { } @@ -807,8 +1014,8 @@ internal sealed class CardElementJsonConverter : JsonConverter private static readonly List _typeMap = new() { new ObjectType(["type"], "AdaptiveCard", typeof(AdaptiveCard)), - new ObjectType(["type"], "Container", typeof(Container)), new ObjectType(["type"], "ActionSet", typeof(ActionSet)), + new ObjectType(["type"], "Container", typeof(Container)), new ObjectType(["type"], "ColumnSet", typeof(ColumnSet)), new ObjectType(["type"], "Media", typeof(Media)), new ObjectType(["type"], "RichTextBlock", typeof(RichTextBlock)), @@ -829,6 +1036,8 @@ internal sealed class CardElementJsonConverter : JsonConverter new ObjectType(["type"], "Icon", typeof(Icon)), new ObjectType(["type"], "Carousel", typeof(Carousel)), new ObjectType(["type"], "Badge", typeof(Badge)), + new ObjectType(["type"], "ProgressRing", typeof(ProgressRing)), + new ObjectType(["type"], "ProgressBar", typeof(ProgressBar)), new ObjectType(["type"], "Chart.Donut", typeof(DonutChart)), new ObjectType(["type"], "Chart.Pie", typeof(PieChart)), new ObjectType(["type"], "Chart.VerticalBar.Grouped", typeof(GroupedVerticalBarChart)), @@ -894,12 +1103,14 @@ internal sealed class ActionJsonConverter : JsonConverter private static readonly List _typeMap = new() { new ObjectType(["type"], "Action.Execute", typeof(ExecuteAction)), - new ObjectType(["type"], "Action.Submit", typeof(SubmitAction)), + new ObjectType(["type"], "Action.InsertImage", typeof(InsertImageAction)), new ObjectType(["type"], "Action.OpenUrl", typeof(OpenUrlAction)), + new ObjectType(["type"], "Action.OpenUrlDialog", typeof(OpenUrlDialogAction)), + new ObjectType(["type"], "Action.ResetInputs", typeof(ResetInputsAction)), + new ObjectType(["type"], "Action.Submit", typeof(SubmitAction)), new ObjectType(["type"], "Action.ToggleVisibility", typeof(ToggleVisibilityAction)), new ObjectType(["type"], "Action.ShowCard", typeof(ShowCardAction)), - new ObjectType(["type"], "Action.ResetInputs", typeof(ResetInputsAction)), - new ObjectType(["type"], "Action.InsertImage", typeof(InsertImageAction)), + new ObjectType(["type"], "Action.Popover", typeof(PopoverAction)), }; public override Action? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) @@ -998,6 +1209,12 @@ public class AdaptiveCard : CardElement return JsonSerializer.Deserialize(json); } + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + /// /// Must be **AdaptiveCard**. /// @@ -1014,7 +1231,7 @@ public class AdaptiveCard : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -1026,7 +1243,7 @@ public class AdaptiveCard : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// /// An Action that will be invoked when the element is tapped or clicked. Action.ShowCard is not supported. @@ -1080,7 +1297,7 @@ public class AdaptiveCard : CardElement /// The Adaptive Card schema version the card is authored against. /// [JsonPropertyName("version")] - public Version? Version { get; set; } + public Version? Version { get; set; } = Version.Version1_5; /// /// The text that should be displayed if the client is not able to render the card. @@ -1106,6 +1323,9 @@ public class AdaptiveCard : CardElement [JsonPropertyName("authentication")] public Authentication? Authentication { get; set; } + /// + /// Teams-specific metadata associated with the card. + /// [JsonPropertyName("msteams")] public TeamsCardProperties? Msteams { get; set; } @@ -1115,6 +1335,12 @@ public class AdaptiveCard : CardElement [JsonPropertyName("metadata")] public CardMetadata? Metadata { get; set; } + /// + /// Resources card elements can reference. + /// + [JsonPropertyName("resources")] + public Resources? Resources { get; set; } + /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. /// @@ -1159,6 +1385,12 @@ public string Serialize() ); } + public AdaptiveCard WithKey(string value) + { + this.Key = value; + return this; + } + public AdaptiveCard WithId(string value) { this.Id = value; @@ -1273,6 +1505,12 @@ public AdaptiveCard WithMetadata(CardMetadata value) return this; } + public AdaptiveCard WithResources(Resources value) + { + this.Resources = value; + return this; + } + public AdaptiveCard WithGridArea(string value) { this.GridArea = value; @@ -1311,6 +1549,11 @@ public class HostCapabilities : SerializableObject return JsonSerializer.Deserialize(json); } + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } /// /// Serializes this HostCapabilities into a JSON string. @@ -1326,6 +1569,12 @@ public string Serialize() } ); } + + public HostCapabilities WithKey(string value) + { + this.Key = value; + return this; + } [JsonExtensionData] public IDictionary NonSchemaProperties { get; set; } = new Dictionary(); } @@ -1343,6 +1592,12 @@ public class ExecuteAction : Action return JsonSerializer.Deserialize(json); } + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + /// /// Must be **Action.Execute**. /// @@ -1359,7 +1614,7 @@ public class ExecuteAction : Action /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The title of the action, as it appears on buttons. @@ -1379,13 +1634,13 @@ public class ExecuteAction : Action /// Control the style of the action, affecting its visual and spoken representations. /// [JsonPropertyName("style")] - public ActionStyle? Style { get; set; } + public ActionStyle? Style { get; set; } = ActionStyle.Default; /// /// Controls if the action is primary or secondary. Secondary actions appear in an overflow menu. /// [JsonPropertyName("mode")] - public ActionMode? Mode { get; set; } + public ActionMode? Mode { get; set; } = ActionMode.Primary; /// /// The tooltip text to display when the action is hovered over. @@ -1397,7 +1652,19 @@ public class ExecuteAction : Action /// Controls the enabled state of the action. A disabled action cannot be clicked. If the action is represented as a button, the button's style will reflect this state. /// [JsonPropertyName("isEnabled")] - public bool? IsEnabled { get; set; } + public bool? IsEnabled { get; set; } = true; + + /// + /// The actions to display in the overflow menu of a Split action button. + /// + [JsonPropertyName("menuActions")] + public IList? MenuActions { get; set; } + + /// + /// A set of theme-specific icon URLs. + /// + [JsonPropertyName("themedIconUrls")] + public IList? ThemedIconUrls { get; set; } /// /// The data to send to the Bot when the action is executed. When expressed as an object, `data` is sent back to the Bot when the action is executed, adorned with the values of the inputs expressed as key/value pairs, where the key is the Id of the input. If `data` is expressed as a string, input values are not sent to the Bot. @@ -1415,7 +1682,7 @@ public class ExecuteAction : Action /// Controls if the action is enabled only if at least one required input has been filled by the user. /// [JsonPropertyName("conditionallyEnabled")] - public bool? ConditionallyEnabled { get; set; } + public bool? ConditionallyEnabled { get; set; } = false; /// /// The verb of the action. @@ -1444,6 +1711,12 @@ public string Serialize() ); } + public ExecuteAction WithKey(string value) + { + this.Key = value; + return this; + } + public ExecuteAction WithId(string value) { this.Id = value; @@ -1492,6 +1765,18 @@ public ExecuteAction WithIsEnabled(bool value) return this; } + public ExecuteAction WithMenuActions(params IList value) + { + this.MenuActions = value; + return this; + } + + public ExecuteAction WithThemedIconUrls(params IList value) + { + this.ThemedIconUrls = value; + return this; + } + public ExecuteAction WithData(IUnion value) { this.Data = value; @@ -1524,188 +1809,118 @@ public ExecuteAction WithFallback(IUnion value) } /// -/// Represents the data of an Action.Submit. +/// Inserts an image into the host application's canvas. /// -public class SubmitActionData : SerializableObject +public class InsertImageAction : Action { /// - /// Deserializes a JSON string into an object of type SubmitActionData. + /// Deserializes a JSON string into an object of type InsertImageAction. /// - public static SubmitActionData? Deserialize(string json) + public static InsertImageAction? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } - [JsonPropertyName("msteams")] - public object? Msteams { get; set; } - /// - /// Serializes this SubmitActionData into a JSON string. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } + [JsonPropertyName("key")] + public string? Key { get; set; } - public SubmitActionData WithMsteams(object value) - { - this.Msteams = value; - return this; - } - [JsonExtensionData] - public IDictionary NonSchemaProperties { get; set; } = new Dictionary(); -} + /// + /// Must be **Action.InsertImage**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "Action.InsertImage"; -/// -/// Represents Teams-specific data in an Action.Submit to send an Instant Message back to the Bot. -/// -public class ImBackSubmitActionData : SerializableObject -{ /// - /// Deserializes a JSON string into an object of type ImBackSubmitActionData. + /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. /// - public static ImBackSubmitActionData? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } + [JsonPropertyName("id")] + public string? Id { get; set; } /// - /// Must be **imBack**. + /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// - [JsonPropertyName("type")] - public string Type { get; } = "imBack"; + [JsonPropertyName("requires")] + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// - /// The value that will be sent to the Bot. + /// The title of the action, as it appears on buttons. /// - [JsonPropertyName("value")] - public string? Value { get; set; } + [JsonPropertyName("title")] + public string? Title { get; set; } - public ImBackSubmitActionData(string value) - { - this.Value = value; - } + /// + /// A URL (or Base64-encoded Data URI) to a PNG, GIF, JPEG or SVG image to be displayed on the left of the action's title. + /// + /// `iconUrl` also accepts the `[,regular|filled]` format to display an icon from the vast [Adaptive Card icon catalog](https://adaptivecards.microsoft.com/?topic=icon-catalog) instead of an image. + /// + [JsonPropertyName("iconUrl")] + public string? IconUrl { get; set; } /// - /// Serializes this ImBackSubmitActionData into a JSON string. + /// Control the style of the action, affecting its visual and spoken representations. /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } - - public ImBackSubmitActionData WithValue(string value) - { - this.Value = value; - return this; - } -} + [JsonPropertyName("style")] + public ActionStyle? Style { get; set; } = ActionStyle.Default; -/// -/// Represents Teams-specific data in an Action.Submit to make an Invoke request to the Bot. -/// -public class InvokeSubmitActionData : SerializableObject -{ /// - /// Deserializes a JSON string into an object of type InvokeSubmitActionData. + /// Controls if the action is primary or secondary. Secondary actions appear in an overflow menu. /// - public static InvokeSubmitActionData? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } + [JsonPropertyName("mode")] + public ActionMode? Mode { get; set; } = ActionMode.Primary; /// - /// Must be **invoke**. + /// The tooltip text to display when the action is hovered over. /// - [JsonPropertyName("type")] - public string Type { get; } = "invoke"; + [JsonPropertyName("tooltip")] + public string? Tooltip { get; set; } /// - /// The object to send to the Bot with the Invoke request. + /// Controls the enabled state of the action. A disabled action cannot be clicked. If the action is represented as a button, the button's style will reflect this state. /// - [JsonPropertyName("value")] - public object? Value { get; set; } - - public InvokeSubmitActionData(object value) - { - this.Value = value; - } + [JsonPropertyName("isEnabled")] + public bool? IsEnabled { get; set; } = true; /// - /// Serializes this InvokeSubmitActionData into a JSON string. + /// The actions to display in the overflow menu of a Split action button. /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } - - public InvokeSubmitActionData WithValue(object value) - { - this.Value = value; - return this; - } -} + [JsonPropertyName("menuActions")] + public IList? MenuActions { get; set; } -/// -/// Represents Teams-specific data in an Action.Submit to send a message back to the Bot. -/// -public class MessageBackSubmitActionData : SerializableObject -{ /// - /// Deserializes a JSON string into an object of type MessageBackSubmitActionData. + /// A set of theme-specific icon URLs. /// - public static MessageBackSubmitActionData? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } + [JsonPropertyName("themedIconUrls")] + public IList? ThemedIconUrls { get; set; } /// - /// Must be **messageBack**. + /// The URL of the image to insert. /// - [JsonPropertyName("type")] - public string Type { get; } = "messageBack"; + [JsonPropertyName("url")] + public string? Url { get; set; } /// - /// The text that will be sent to the Bot. + /// The alternate text for the image. /// - [JsonPropertyName("text")] - public string? Text { get; set; } + [JsonPropertyName("altText")] + public string? AltText { get; set; } /// - /// The optional text that will be displayed as a new message in the conversation, as if the end-user sent it. `displayText` is not sent to the Bot. + /// The position at which to insert the image. /// - [JsonPropertyName("displayText")] - public string? DisplayText { get; set; } + [JsonPropertyName("insertPosition")] + public ImageInsertPosition? InsertPosition { get; set; } = ImageInsertPosition.Selection; /// - /// Optional additional value that will be sent to the Bot. For instance, `value` can encode specific context for the action, such as unique identifiers or a JSON object. + /// An alternate action to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. /// - [JsonPropertyName("value")] - public string? Value { get; set; } + [JsonPropertyName("fallback")] + public IUnion? Fallback { get; set; } /// - /// Serializes this MessageBackSubmitActionData into a JSON string. + /// Serializes this InsertImageAction into a JSON string. /// public string Serialize() { @@ -1719,130 +1934,121 @@ public string Serialize() ); } - public MessageBackSubmitActionData WithText(string value) + public InsertImageAction WithKey(string value) { - this.Text = value; + this.Key = value; return this; } - public MessageBackSubmitActionData WithDisplayText(string value) + public InsertImageAction WithId(string value) { - this.DisplayText = value; + this.Id = value; return this; } - public MessageBackSubmitActionData WithValue(string value) + public InsertImageAction WithRequires(HostCapabilities value) { - this.Value = value; + this.Requires = value; return this; } -} -/// -/// Represents Teams-specific data in an Action.Submit to sign in a user. -/// -public class SigninSubmitActionData : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type SigninSubmitActionData. - /// - public static SigninSubmitActionData? Deserialize(string json) + public InsertImageAction WithTitle(string value) { - return JsonSerializer.Deserialize(json); + this.Title = value; + return this; } - /// - /// Must be **signin**. - /// - [JsonPropertyName("type")] - public string Type { get; } = "signin"; + public InsertImageAction WithIconUrl(string value) + { + this.IconUrl = value; + return this; + } - /// - /// The URL to redirect the end-user for signing in. - /// - [JsonPropertyName("value")] - public string? Value { get; set; } + public InsertImageAction WithStyle(ActionStyle value) + { + this.Style = value; + return this; + } - public SigninSubmitActionData(string value) + public InsertImageAction WithMode(ActionMode value) { - this.Value = value; + this.Mode = value; + return this; } - /// - /// Serializes this SigninSubmitActionData into a JSON string. - /// - public string Serialize() + public InsertImageAction WithTooltip(string value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.Tooltip = value; + return this; } - public SigninSubmitActionData WithValue(string value) + public InsertImageAction WithIsEnabled(bool value) { - this.Value = value; + this.IsEnabled = value; return this; } -} -/// -/// Represents Teams-specific data in an Action.Submit to open a task module. -/// -public class TaskFetchSubmitActionData : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type TaskFetchSubmitActionData. - /// - public static TaskFetchSubmitActionData? Deserialize(string json) + public InsertImageAction WithMenuActions(params IList value) { - return JsonSerializer.Deserialize(json); + this.MenuActions = value; + return this; } - /// - /// Must be **task/fetch**. - /// - [JsonPropertyName("type")] - public string Type { get; } = "task/fetch"; + public InsertImageAction WithThemedIconUrls(params IList value) + { + this.ThemedIconUrls = value; + return this; + } - /// - /// Serializes this TaskFetchSubmitActionData into a JSON string. - /// - public string Serialize() + public InsertImageAction WithUrl(string value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.Url = value; + return this; + } + + public InsertImageAction WithAltText(string value) + { + this.AltText = value; + return this; + } + + public InsertImageAction WithInsertPosition(ImageInsertPosition value) + { + this.InsertPosition = value; + return this; + } + + public InsertImageAction WithFallback(IUnion value) + { + this.Fallback = value; + return this; } } /// -/// Gathers input values, merges them with the data property if specified, and sends them to the Bot via an Invoke activity. The Bot can only acknowledge is has received the request. +/// Opens the provided URL in either a separate browser tab or within the host application. /// -public class SubmitAction : Action +public class OpenUrlAction : Action { /// - /// Deserializes a JSON string into an object of type SubmitAction. + /// Deserializes a JSON string into an object of type OpenUrlAction. /// - public static SubmitAction? Deserialize(string json) + public static OpenUrlAction? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Action.Submit**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Action.OpenUrl**. /// [JsonPropertyName("type")] - public string Type { get; } = "Action.Submit"; + public string Type { get; } = "Action.OpenUrl"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -1854,7 +2060,7 @@ public class SubmitAction : Action /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The title of the action, as it appears on buttons. @@ -1874,13 +2080,13 @@ public class SubmitAction : Action /// Control the style of the action, affecting its visual and spoken representations. /// [JsonPropertyName("style")] - public ActionStyle? Style { get; set; } + public ActionStyle? Style { get; set; } = ActionStyle.Default; /// /// Controls if the action is primary or secondary. Secondary actions appear in an overflow menu. /// [JsonPropertyName("mode")] - public ActionMode? Mode { get; set; } + public ActionMode? Mode { get; set; } = ActionMode.Primary; /// /// The tooltip text to display when the action is hovered over. @@ -1892,28 +2098,25 @@ public class SubmitAction : Action /// Controls the enabled state of the action. A disabled action cannot be clicked. If the action is represented as a button, the button's style will reflect this state. /// [JsonPropertyName("isEnabled")] - public bool? IsEnabled { get; set; } + public bool? IsEnabled { get; set; } = true; /// - /// The data to send to the Bot when the action is executed. When expressed as an object, `data` is sent back to the Bot when the action is executed, adorned with the values of the inputs expressed as key/value pairs, where the key is the Id of the input. If `data` is expressed as a string, input values are not sent to the Bot. + /// The actions to display in the overflow menu of a Split action button. /// - [JsonPropertyName("data")] - public IUnion? Data { get; set; } + [JsonPropertyName("menuActions")] + public IList? MenuActions { get; set; } /// - /// The Ids of the inputs associated with the Action.Submit. When the action is executed, the values of the associated inputs are sent to the Bot. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. + /// A set of theme-specific icon URLs. /// - [JsonPropertyName("associatedInputs")] - public AssociatedInputs? AssociatedInputs { get; set; } + [JsonPropertyName("themedIconUrls")] + public IList? ThemedIconUrls { get; set; } /// - /// Controls if the action is enabled only if at least one required input has been filled by the user. + /// The URL to open. /// - [JsonPropertyName("conditionallyEnabled")] - public bool? ConditionallyEnabled { get; set; } - - [JsonPropertyName("msteams")] - public TeamsSubmitActionProperties? Msteams { get; set; } + [JsonPropertyName("url")] + public string? Url { get; set; } /// /// An alternate action to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. @@ -1921,8 +2124,13 @@ public class SubmitAction : Action [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } + public OpenUrlAction(string url) + { + this.Url = url; + } + /// - /// Serializes this SubmitAction into a JSON string. + /// Serializes this OpenUrlAction into a JSON string. /// public string Serialize() { @@ -1936,79 +2144,79 @@ public string Serialize() ); } - public SubmitAction WithId(string value) + public OpenUrlAction WithKey(string value) { - this.Id = value; + this.Key = value; return this; } - public SubmitAction WithRequires(HostCapabilities value) + public OpenUrlAction WithId(string value) + { + this.Id = value; + return this; + } + + public OpenUrlAction WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public SubmitAction WithTitle(string value) + public OpenUrlAction WithTitle(string value) { this.Title = value; return this; } - public SubmitAction WithIconUrl(string value) + public OpenUrlAction WithIconUrl(string value) { this.IconUrl = value; return this; } - public SubmitAction WithStyle(ActionStyle value) + public OpenUrlAction WithStyle(ActionStyle value) { this.Style = value; return this; } - public SubmitAction WithMode(ActionMode value) + public OpenUrlAction WithMode(ActionMode value) { this.Mode = value; return this; } - public SubmitAction WithTooltip(string value) + public OpenUrlAction WithTooltip(string value) { this.Tooltip = value; return this; } - public SubmitAction WithIsEnabled(bool value) + public OpenUrlAction WithIsEnabled(bool value) { this.IsEnabled = value; return this; } - public SubmitAction WithData(IUnion value) - { - this.Data = value; - return this; - } - - public SubmitAction WithAssociatedInputs(AssociatedInputs value) + public OpenUrlAction WithMenuActions(params IList value) { - this.AssociatedInputs = value; + this.MenuActions = value; return this; } - public SubmitAction WithConditionallyEnabled(bool value) + public OpenUrlAction WithThemedIconUrls(params IList value) { - this.ConditionallyEnabled = value; + this.ThemedIconUrls = value; return this; } - public SubmitAction WithMsteams(TeamsSubmitActionProperties value) + public OpenUrlAction WithUrl(string value) { - this.Msteams = value; + this.Url = value; return this; } - public SubmitAction WithFallback(IUnion value) + public OpenUrlAction WithFallback(IUnion value) { this.Fallback = value; return this; @@ -2016,105 +2224,29 @@ public SubmitAction WithFallback(IUnion value) } /// -/// Teams-specific properties associated with the action. -/// -public class TeamsSubmitActionProperties : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type TeamsSubmitActionProperties. - /// - public static TeamsSubmitActionProperties? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } - - /// - /// Defines how feedback is provided to the end-user when the action is executed. - /// - [JsonPropertyName("feedback")] - public TeamsSubmitActionFeedback? Feedback { get; set; } - - /// - /// Serializes this TeamsSubmitActionProperties into a JSON string. - /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } - - public TeamsSubmitActionProperties WithFeedback(TeamsSubmitActionFeedback value) - { - this.Feedback = value; - return this; - } -} - -/// -/// Represents feedback options for an [Action.Submit](https://adaptivecards.microsoft.com/?topic=Action.Submit). +/// Opens a task module in a modal dialog hosting the content at a provided URL. /// -public class TeamsSubmitActionFeedback : SerializableObject +public class OpenUrlDialogAction : Action { /// - /// Deserializes a JSON string into an object of type TeamsSubmitActionFeedback. - /// - public static TeamsSubmitActionFeedback? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } - - /// - /// Defines if a feedback message should be displayed after the action is executed. - /// - [JsonPropertyName("hide")] - public bool? Hide { get; set; } - - /// - /// Serializes this TeamsSubmitActionFeedback into a JSON string. + /// Deserializes a JSON string into an object of type OpenUrlDialogAction. /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } - - public TeamsSubmitActionFeedback WithHide(bool value) + public static OpenUrlDialogAction? Deserialize(string json) { - this.Hide = value; - return this; + return JsonSerializer.Deserialize(json); } -} -/// -/// Opens the provided URL in either a separate browser tab or within the host application. -/// -public class OpenUrlAction : Action -{ /// - /// Deserializes a JSON string into an object of type OpenUrlAction. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - public static OpenUrlAction? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// Must be **Action.OpenUrl**. + /// Must be **Action.OpenUrlDialog**. /// [JsonPropertyName("type")] - public string Type { get; } = "Action.OpenUrl"; + public string Type { get; } = "Action.OpenUrlDialog"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -2126,7 +2258,7 @@ public class OpenUrlAction : Action /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The title of the action, as it appears on buttons. @@ -2146,13 +2278,13 @@ public class OpenUrlAction : Action /// Control the style of the action, affecting its visual and spoken representations. /// [JsonPropertyName("style")] - public ActionStyle? Style { get; set; } + public ActionStyle? Style { get; set; } = ActionStyle.Default; /// /// Controls if the action is primary or secondary. Secondary actions appear in an overflow menu. /// [JsonPropertyName("mode")] - public ActionMode? Mode { get; set; } + public ActionMode? Mode { get; set; } = ActionMode.Primary; /// /// The tooltip text to display when the action is hovered over. @@ -2164,7 +2296,37 @@ public class OpenUrlAction : Action /// Controls the enabled state of the action. A disabled action cannot be clicked. If the action is represented as a button, the button's style will reflect this state. /// [JsonPropertyName("isEnabled")] - public bool? IsEnabled { get; set; } + public bool? IsEnabled { get; set; } = true; + + /// + /// The actions to display in the overflow menu of a Split action button. + /// + [JsonPropertyName("menuActions")] + public IList? MenuActions { get; set; } + + /// + /// A set of theme-specific icon URLs. + /// + [JsonPropertyName("themedIconUrls")] + public IList? ThemedIconUrls { get; set; } + + /// + /// The title of the dialog to be displayed in the dialog header. + /// + [JsonPropertyName("dialogTitle")] + public string? DialogTitle { get; set; } + + /// + /// The height of the dialog. To define height as a number of pixels, use the px format. + /// + [JsonPropertyName("dialogHeight")] + public string? DialogHeight { get; set; } + + /// + /// The width of the dialog. To define width as a number of pixels, use the px format. + /// + [JsonPropertyName("dialogWidth")] + public string? DialogWidth { get; set; } /// /// The URL to open. @@ -2178,13 +2340,8 @@ public class OpenUrlAction : Action [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } - public OpenUrlAction(string url) - { - this.Url = url; - } - /// - /// Serializes this OpenUrlAction into a JSON string. + /// Serializes this OpenUrlDialogAction into a JSON string. /// public string Serialize() { @@ -2198,61 +2355,97 @@ public string Serialize() ); } - public OpenUrlAction WithId(string value) + public OpenUrlDialogAction WithKey(string value) + { + this.Key = value; + return this; + } + + public OpenUrlDialogAction WithId(string value) { this.Id = value; return this; } - public OpenUrlAction WithRequires(HostCapabilities value) + public OpenUrlDialogAction WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public OpenUrlAction WithTitle(string value) + public OpenUrlDialogAction WithTitle(string value) { this.Title = value; return this; } - public OpenUrlAction WithIconUrl(string value) + public OpenUrlDialogAction WithIconUrl(string value) { this.IconUrl = value; return this; } - public OpenUrlAction WithStyle(ActionStyle value) + public OpenUrlDialogAction WithStyle(ActionStyle value) { this.Style = value; return this; } - public OpenUrlAction WithMode(ActionMode value) + public OpenUrlDialogAction WithMode(ActionMode value) { this.Mode = value; return this; } - public OpenUrlAction WithTooltip(string value) + public OpenUrlDialogAction WithTooltip(string value) { this.Tooltip = value; return this; } - public OpenUrlAction WithIsEnabled(bool value) + public OpenUrlDialogAction WithIsEnabled(bool value) { this.IsEnabled = value; return this; } - public OpenUrlAction WithUrl(string value) + public OpenUrlDialogAction WithMenuActions(params IList value) + { + this.MenuActions = value; + return this; + } + + public OpenUrlDialogAction WithThemedIconUrls(params IList value) + { + this.ThemedIconUrls = value; + return this; + } + + public OpenUrlDialogAction WithDialogTitle(string value) + { + this.DialogTitle = value; + return this; + } + + public OpenUrlDialogAction WithDialogHeight(string value) + { + this.DialogHeight = value; + return this; + } + + public OpenUrlDialogAction WithDialogWidth(string value) + { + this.DialogWidth = value; + return this; + } + + public OpenUrlDialogAction WithUrl(string value) { this.Url = value; return this; } - public OpenUrlAction WithFallback(IUnion value) + public OpenUrlDialogAction WithFallback(IUnion value) { this.Fallback = value; return this; @@ -2260,23 +2453,29 @@ public OpenUrlAction WithFallback(IUnion value) } /// -/// Toggles the visibility of a set of elements. Action.ToggleVisibility is useful for creating "Show more" type UI patterns. +/// Resets the values of the inputs in the card. /// -public class ToggleVisibilityAction : Action +public class ResetInputsAction : Action { /// - /// Deserializes a JSON string into an object of type ToggleVisibilityAction. + /// Deserializes a JSON string into an object of type ResetInputsAction. /// - public static ToggleVisibilityAction? Deserialize(string json) + public static ResetInputsAction? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Action.ToggleVisibility**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Action.ResetInputs**. /// [JsonPropertyName("type")] - public string Type { get; } = "Action.ToggleVisibility"; + public string Type { get; } = "Action.ResetInputs"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -2288,7 +2487,7 @@ public class ToggleVisibilityAction : Action /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The title of the action, as it appears on buttons. @@ -2308,13 +2507,13 @@ public class ToggleVisibilityAction : Action /// Control the style of the action, affecting its visual and spoken representations. /// [JsonPropertyName("style")] - public ActionStyle? Style { get; set; } + public ActionStyle? Style { get; set; } = ActionStyle.Default; /// /// Controls if the action is primary or secondary. Secondary actions appear in an overflow menu. /// [JsonPropertyName("mode")] - public ActionMode? Mode { get; set; } + public ActionMode? Mode { get; set; } = ActionMode.Primary; /// /// The tooltip text to display when the action is hovered over. @@ -2326,13 +2525,25 @@ public class ToggleVisibilityAction : Action /// Controls the enabled state of the action. A disabled action cannot be clicked. If the action is represented as a button, the button's style will reflect this state. /// [JsonPropertyName("isEnabled")] - public bool? IsEnabled { get; set; } + public bool? IsEnabled { get; set; } = true; /// - /// The Ids of the elements to toggle the visibility of. + /// The actions to display in the overflow menu of a Split action button. /// - [JsonPropertyName("targetElements")] - public IUnion, IList>? TargetElements { get; set; } + [JsonPropertyName("menuActions")] + public IList? MenuActions { get; set; } + + /// + /// A set of theme-specific icon URLs. + /// + [JsonPropertyName("themedIconUrls")] + public IList? ThemedIconUrls { get; set; } + + /// + /// The Ids of the inputs that should be reset. + /// + [JsonPropertyName("targetInputIds")] + public IList? TargetInputIds { get; set; } /// /// An alternate action to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. @@ -2341,7 +2552,7 @@ public class ToggleVisibilityAction : Action public IUnion? Fallback { get; set; } /// - /// Serializes this ToggleVisibilityAction into a JSON string. + /// Serializes this ResetInputsAction into a JSON string. /// public string Serialize() { @@ -2355,61 +2566,79 @@ public string Serialize() ); } - public ToggleVisibilityAction WithId(string value) + public ResetInputsAction WithKey(string value) + { + this.Key = value; + return this; + } + + public ResetInputsAction WithId(string value) { this.Id = value; return this; } - public ToggleVisibilityAction WithRequires(HostCapabilities value) + public ResetInputsAction WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public ToggleVisibilityAction WithTitle(string value) + public ResetInputsAction WithTitle(string value) { this.Title = value; return this; } - public ToggleVisibilityAction WithIconUrl(string value) + public ResetInputsAction WithIconUrl(string value) { this.IconUrl = value; return this; } - public ToggleVisibilityAction WithStyle(ActionStyle value) + public ResetInputsAction WithStyle(ActionStyle value) { this.Style = value; return this; } - public ToggleVisibilityAction WithMode(ActionMode value) + public ResetInputsAction WithMode(ActionMode value) { this.Mode = value; return this; } - public ToggleVisibilityAction WithTooltip(string value) + public ResetInputsAction WithTooltip(string value) { this.Tooltip = value; return this; } - public ToggleVisibilityAction WithIsEnabled(bool value) + public ResetInputsAction WithIsEnabled(bool value) { this.IsEnabled = value; return this; } - public ToggleVisibilityAction WithTargetElements(IUnion, IList> value) + public ResetInputsAction WithMenuActions(params IList value) { - this.TargetElements = value; + this.MenuActions = value; return this; } - public ToggleVisibilityAction WithFallback(IUnion value) + public ResetInputsAction WithThemedIconUrls(params IList value) + { + this.ThemedIconUrls = value; + return this; + } + + public ResetInputsAction WithTargetInputIds(params IList value) + { + this.TargetInputIds = value; + return this; + } + + public ResetInputsAction WithFallback(IUnion value) { this.Fallback = value; return this; @@ -2417,76 +2646,29 @@ public ToggleVisibilityAction WithFallback(IUnion value) } /// -/// Defines a target element in an Action.ToggleVisibility. +/// Gathers input values, merges them with the data property if specified, and sends them to the Bot via an Invoke activity. The Bot can only acknowledge is has received the request. /// -public class TargetElement : SerializableObject +public class SubmitAction : Action { /// - /// Deserializes a JSON string into an object of type TargetElement. + /// Deserializes a JSON string into an object of type SubmitAction. /// - public static TargetElement? Deserialize(string json) + public static SubmitAction? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The Id of the element to change the visibility of. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("elementId")] - public string? ElementId { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The new visibility state of the element. - /// - [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } - - /// - /// Serializes this TargetElement into a JSON string. - /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } - - public TargetElement WithElementId(string value) - { - this.ElementId = value; - return this; - } - - public TargetElement WithIsVisible(bool value) - { - this.IsVisible = value; - return this; - } -} - -/// -/// Expands or collapses an embedded card within the main card. -/// -public class ShowCardAction : Action -{ - /// - /// Deserializes a JSON string into an object of type ShowCardAction. - /// - public static ShowCardAction? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } - - /// - /// Must be **Action.ShowCard**. + /// Must be **Action.Submit**. /// [JsonPropertyName("type")] - public string Type { get; } = "Action.ShowCard"; + public string Type { get; } = "Action.Submit"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -2498,7 +2680,7 @@ public class ShowCardAction : Action /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The title of the action, as it appears on buttons. @@ -2518,13 +2700,13 @@ public class ShowCardAction : Action /// Control the style of the action, affecting its visual and spoken representations. /// [JsonPropertyName("style")] - public ActionStyle? Style { get; set; } + public ActionStyle? Style { get; set; } = ActionStyle.Default; /// /// Controls if the action is primary or secondary. Secondary actions appear in an overflow menu. /// [JsonPropertyName("mode")] - public ActionMode? Mode { get; set; } + public ActionMode? Mode { get; set; } = ActionMode.Primary; /// /// The tooltip text to display when the action is hovered over. @@ -2536,22 +2718,52 @@ public class ShowCardAction : Action /// Controls the enabled state of the action. A disabled action cannot be clicked. If the action is represented as a button, the button's style will reflect this state. /// [JsonPropertyName("isEnabled")] - public bool? IsEnabled { get; set; } + public bool? IsEnabled { get; set; } = true; /// - /// An alternate action to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// The actions to display in the overflow menu of a Split action button. /// - [JsonPropertyName("fallback")] - public IUnion? Fallback { get; set; } + [JsonPropertyName("menuActions")] + public IList? MenuActions { get; set; } /// - /// The card that should be displayed when the action is executed. + /// A set of theme-specific icon URLs. /// - [JsonPropertyName("card")] - public AdaptiveCard? Card { get; set; } + [JsonPropertyName("themedIconUrls")] + public IList? ThemedIconUrls { get; set; } /// - /// Serializes this ShowCardAction into a JSON string. + /// The data to send to the Bot when the action is executed. When expressed as an object, `data` is sent back to the Bot when the action is executed, adorned with the values of the inputs expressed as key/value pairs, where the key is the Id of the input. If `data` is expressed as a string, input values are not sent to the Bot. + /// + [JsonPropertyName("data")] + public IUnion? Data { get; set; } + + /// + /// The Ids of the inputs associated with the Action.Submit. When the action is executed, the values of the associated inputs are sent to the Bot. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. + /// + [JsonPropertyName("associatedInputs")] + public AssociatedInputs? AssociatedInputs { get; set; } + + /// + /// Controls if the action is enabled only if at least one required input has been filled by the user. + /// + [JsonPropertyName("conditionallyEnabled")] + public bool? ConditionallyEnabled { get; set; } = false; + + /// + /// Teams-specific metadata associated with the action. + /// + [JsonPropertyName("msteams")] + public TeamsSubmitActionProperties? Msteams { get; set; } + + /// + /// An alternate action to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// + [JsonPropertyName("fallback")] + public IUnion? Fallback { get; set; } + + /// + /// Serializes this SubmitAction into a JSON string. /// public string Serialize() { @@ -2565,85 +2777,127 @@ public string Serialize() ); } - public ShowCardAction WithId(string value) + public SubmitAction WithKey(string value) + { + this.Key = value; + return this; + } + + public SubmitAction WithId(string value) { this.Id = value; return this; } - public ShowCardAction WithRequires(HostCapabilities value) + public SubmitAction WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public ShowCardAction WithTitle(string value) + public SubmitAction WithTitle(string value) { this.Title = value; return this; } - public ShowCardAction WithIconUrl(string value) + public SubmitAction WithIconUrl(string value) { this.IconUrl = value; return this; } - public ShowCardAction WithStyle(ActionStyle value) + public SubmitAction WithStyle(ActionStyle value) { this.Style = value; return this; } - public ShowCardAction WithMode(ActionMode value) + public SubmitAction WithMode(ActionMode value) { this.Mode = value; return this; } - public ShowCardAction WithTooltip(string value) + public SubmitAction WithTooltip(string value) { this.Tooltip = value; return this; } - public ShowCardAction WithIsEnabled(bool value) + public SubmitAction WithIsEnabled(bool value) { this.IsEnabled = value; return this; } - public ShowCardAction WithFallback(IUnion value) + public SubmitAction WithMenuActions(params IList value) { - this.Fallback = value; + this.MenuActions = value; return this; } - public ShowCardAction WithCard(AdaptiveCard value) + public SubmitAction WithThemedIconUrls(params IList value) { - this.Card = value; + this.ThemedIconUrls = value; + return this; + } + + public SubmitAction WithData(IUnion value) + { + this.Data = value; + return this; + } + + public SubmitAction WithAssociatedInputs(AssociatedInputs value) + { + this.AssociatedInputs = value; + return this; + } + + public SubmitAction WithConditionallyEnabled(bool value) + { + this.ConditionallyEnabled = value; + return this; + } + + public SubmitAction WithMsteams(TeamsSubmitActionProperties value) + { + this.Msteams = value; + return this; + } + + public SubmitAction WithFallback(IUnion value) + { + this.Fallback = value; return this; } } /// -/// Resets the values of the inputs in the card. +/// Toggles the visibility of a set of elements. Action.ToggleVisibility is useful for creating "Show more" type UI patterns. /// -public class ResetInputsAction : Action +public class ToggleVisibilityAction : Action { /// - /// Deserializes a JSON string into an object of type ResetInputsAction. + /// Deserializes a JSON string into an object of type ToggleVisibilityAction. /// - public static ResetInputsAction? Deserialize(string json) + public static ToggleVisibilityAction? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Action.ResetInputs**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Action.ToggleVisibility**. /// [JsonPropertyName("type")] - public string Type { get; } = "Action.ResetInputs"; + public string Type { get; } = "Action.ToggleVisibility"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -2655,7 +2909,7 @@ public class ResetInputsAction : Action /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The title of the action, as it appears on buttons. @@ -2675,13 +2929,13 @@ public class ResetInputsAction : Action /// Control the style of the action, affecting its visual and spoken representations. /// [JsonPropertyName("style")] - public ActionStyle? Style { get; set; } + public ActionStyle? Style { get; set; } = ActionStyle.Default; /// /// Controls if the action is primary or secondary. Secondary actions appear in an overflow menu. /// [JsonPropertyName("mode")] - public ActionMode? Mode { get; set; } + public ActionMode? Mode { get; set; } = ActionMode.Primary; /// /// The tooltip text to display when the action is hovered over. @@ -2693,13 +2947,25 @@ public class ResetInputsAction : Action /// Controls the enabled state of the action. A disabled action cannot be clicked. If the action is represented as a button, the button's style will reflect this state. /// [JsonPropertyName("isEnabled")] - public bool? IsEnabled { get; set; } + public bool? IsEnabled { get; set; } = true; /// - /// The Ids of the inputs that should be reset. + /// The actions to display in the overflow menu of a Split action button. /// - [JsonPropertyName("targetInputIds")] - public IList? TargetInputIds { get; set; } + [JsonPropertyName("menuActions")] + public IList? MenuActions { get; set; } + + /// + /// A set of theme-specific icon URLs. + /// + [JsonPropertyName("themedIconUrls")] + public IList? ThemedIconUrls { get; set; } + + /// + /// The Ids of the elements to toggle the visibility of. + /// + [JsonPropertyName("targetElements")] + public IUnion, IList>? TargetElements { get; set; } /// /// An alternate action to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. @@ -2708,7 +2974,7 @@ public class ResetInputsAction : Action public IUnion? Fallback { get; set; } /// - /// Serializes this ResetInputsAction into a JSON string. + /// Serializes this ToggleVisibilityAction into a JSON string. /// public string Serialize() { @@ -2722,61 +2988,79 @@ public string Serialize() ); } - public ResetInputsAction WithId(string value) + public ToggleVisibilityAction WithKey(string value) + { + this.Key = value; + return this; + } + + public ToggleVisibilityAction WithId(string value) { this.Id = value; return this; } - public ResetInputsAction WithRequires(HostCapabilities value) + public ToggleVisibilityAction WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public ResetInputsAction WithTitle(string value) + public ToggleVisibilityAction WithTitle(string value) { this.Title = value; return this; } - public ResetInputsAction WithIconUrl(string value) + public ToggleVisibilityAction WithIconUrl(string value) { this.IconUrl = value; return this; } - public ResetInputsAction WithStyle(ActionStyle value) + public ToggleVisibilityAction WithStyle(ActionStyle value) { this.Style = value; return this; } - public ResetInputsAction WithMode(ActionMode value) + public ToggleVisibilityAction WithMode(ActionMode value) { this.Mode = value; return this; } - public ResetInputsAction WithTooltip(string value) + public ToggleVisibilityAction WithTooltip(string value) { this.Tooltip = value; return this; } - public ResetInputsAction WithIsEnabled(bool value) + public ToggleVisibilityAction WithIsEnabled(bool value) { this.IsEnabled = value; return this; } - public ResetInputsAction WithTargetInputIds(params IList value) + public ToggleVisibilityAction WithMenuActions(params IList value) { - this.TargetInputIds = value; + this.MenuActions = value; return this; } - public ResetInputsAction WithFallback(IUnion value) + public ToggleVisibilityAction WithThemedIconUrls(params IList value) + { + this.ThemedIconUrls = value; + return this; + } + + public ToggleVisibilityAction WithTargetElements(IUnion, IList> value) + { + this.TargetElements = value; + return this; + } + + public ToggleVisibilityAction WithFallback(IUnion value) { this.Fallback = value; return this; @@ -2784,61 +3068,185 @@ public ResetInputsAction WithFallback(IUnion value) } /// -/// Inserts an image into the host application's canvas. +/// Defines a theme-specific URL. /// -public class InsertImageAction : Action +public class ThemedUrl : SerializableObject { /// - /// Deserializes a JSON string into an object of type InsertImageAction. + /// Deserializes a JSON string into an object of type ThemedUrl. /// - public static InsertImageAction? Deserialize(string json) + public static ThemedUrl? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Action.InsertImage**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("type")] - public string Type { get; } = "Action.InsertImage"; + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. + /// The theme this URL applies to. /// - [JsonPropertyName("id")] - public string? Id { get; set; } + [JsonPropertyName("theme")] + public ThemeName? Theme { get; set; } = ThemeName.Light; /// - /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). + /// The URL to use for the associated theme. /// - [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + [JsonPropertyName("url")] + public string? Url { get; set; } /// - /// The title of the action, as it appears on buttons. + /// Serializes this ThemedUrl into a JSON string. /// - [JsonPropertyName("title")] - public string? Title { get; set; } + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } - /// - /// A URL (or Base64-encoded Data URI) to a PNG, GIF, JPEG or SVG image to be displayed on the left of the action's title. - /// - /// `iconUrl` also accepts the `[,regular|filled]` format to display an icon from the vast [Adaptive Card icon catalog](https://adaptivecards.microsoft.com/?topic=icon-catalog) instead of an image. - /// - [JsonPropertyName("iconUrl")] - public string? IconUrl { get; set; } + public ThemedUrl WithKey(string value) + { + this.Key = value; + return this; + } - /// - /// Control the style of the action, affecting its visual and spoken representations. - /// + public ThemedUrl WithTheme(ThemeName value) + { + this.Theme = value; + return this; + } + + public ThemedUrl WithUrl(string value) + { + this.Url = value; + return this; + } +} + +/// +/// Defines a target element in an Action.ToggleVisibility. +/// +public class TargetElement : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type TargetElement. + /// + public static TargetElement? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// The Id of the element to change the visibility of. + /// + [JsonPropertyName("elementId")] + public string? ElementId { get; set; } + + /// + /// The new visibility state of the element. + /// + [JsonPropertyName("isVisible")] + public bool? IsVisible { get; set; } + + /// + /// Serializes this TargetElement into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public TargetElement WithElementId(string value) + { + this.ElementId = value; + return this; + } + + public TargetElement WithIsVisible(bool value) + { + this.IsVisible = value; + return this; + } +} + +/// +/// Expands or collapses an embedded card within the main card. +/// +public class ShowCardAction : Action +{ + /// + /// Deserializes a JSON string into an object of type ShowCardAction. + /// + public static ShowCardAction? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Action.ShowCard**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "Action.ShowCard"; + + /// + /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. + /// + [JsonPropertyName("id")] + public string? Id { get; set; } + + /// + /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). + /// + [JsonPropertyName("requires")] + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); + + /// + /// The title of the action, as it appears on buttons. + /// + [JsonPropertyName("title")] + public string? Title { get; set; } + + /// + /// A URL (or Base64-encoded Data URI) to a PNG, GIF, JPEG or SVG image to be displayed on the left of the action's title. + /// + /// `iconUrl` also accepts the `[,regular|filled]` format to display an icon from the vast [Adaptive Card icon catalog](https://adaptivecards.microsoft.com/?topic=icon-catalog) instead of an image. + /// + [JsonPropertyName("iconUrl")] + public string? IconUrl { get; set; } + + /// + /// Control the style of the action, affecting its visual and spoken representations. + /// [JsonPropertyName("style")] - public ActionStyle? Style { get; set; } + public ActionStyle? Style { get; set; } = ActionStyle.Default; /// /// Controls if the action is primary or secondary. Secondary actions appear in an overflow menu. /// [JsonPropertyName("mode")] - public ActionMode? Mode { get; set; } + public ActionMode? Mode { get; set; } = ActionMode.Primary; /// /// The tooltip text to display when the action is hovered over. @@ -2850,25 +3258,19 @@ public class InsertImageAction : Action /// Controls the enabled state of the action. A disabled action cannot be clicked. If the action is represented as a button, the button's style will reflect this state. /// [JsonPropertyName("isEnabled")] - public bool? IsEnabled { get; set; } - - /// - /// The URL of the image to insert. - /// - [JsonPropertyName("url")] - public string? Url { get; set; } + public bool? IsEnabled { get; set; } = true; /// - /// The alternate text for the image. + /// The actions to display in the overflow menu of a Split action button. /// - [JsonPropertyName("altText")] - public string? AltText { get; set; } + [JsonPropertyName("menuActions")] + public IList? MenuActions { get; set; } /// - /// The position at which to insert the image. + /// A set of theme-specific icon URLs. /// - [JsonPropertyName("insertPosition")] - public ImageInsertPosition? InsertPosition { get; set; } + [JsonPropertyName("themedIconUrls")] + public IList? ThemedIconUrls { get; set; } /// /// An alternate action to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. @@ -2877,7 +3279,13 @@ public class InsertImageAction : Action public IUnion? Fallback { get; set; } /// - /// Serializes this InsertImageAction into a JSON string. + /// The card that should be displayed when the action is executed. + /// + [JsonPropertyName("card")] + public AdaptiveCard? Card { get; set; } + + /// + /// Serializes this ShowCardAction into a JSON string. /// public string Serialize() { @@ -2891,201 +3299,198 @@ public string Serialize() ); } - public InsertImageAction WithId(string value) + public ShowCardAction WithKey(string value) + { + this.Key = value; + return this; + } + + public ShowCardAction WithId(string value) { this.Id = value; return this; } - public InsertImageAction WithRequires(HostCapabilities value) + public ShowCardAction WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public InsertImageAction WithTitle(string value) + public ShowCardAction WithTitle(string value) { this.Title = value; return this; } - public InsertImageAction WithIconUrl(string value) + public ShowCardAction WithIconUrl(string value) { this.IconUrl = value; return this; } - public InsertImageAction WithStyle(ActionStyle value) + public ShowCardAction WithStyle(ActionStyle value) { this.Style = value; return this; } - public InsertImageAction WithMode(ActionMode value) + public ShowCardAction WithMode(ActionMode value) { this.Mode = value; return this; } - public InsertImageAction WithTooltip(string value) + public ShowCardAction WithTooltip(string value) { this.Tooltip = value; return this; } - public InsertImageAction WithIsEnabled(bool value) + public ShowCardAction WithIsEnabled(bool value) { this.IsEnabled = value; return this; } - public InsertImageAction WithUrl(string value) + public ShowCardAction WithMenuActions(params IList value) { - this.Url = value; + this.MenuActions = value; return this; } - public InsertImageAction WithAltText(string value) + public ShowCardAction WithThemedIconUrls(params IList value) { - this.AltText = value; + this.ThemedIconUrls = value; return this; } - public InsertImageAction WithInsertPosition(ImageInsertPosition value) + public ShowCardAction WithFallback(IUnion value) { - this.InsertPosition = value; + this.Fallback = value; return this; } - public InsertImageAction WithFallback(IUnion value) + public ShowCardAction WithCard(AdaptiveCard value) { - this.Fallback = value; + this.Card = value; return this; } } /// -/// A layout that stacks elements on top of each other. Layout.Stack is the default layout used by AdaptiveCard and all containers. +/// Shows a popover to display more information to the user. /// -public class StackLayout : ContainerLayout +public class PopoverAction : Action { /// - /// Deserializes a JSON string into an object of type StackLayout. + /// Deserializes a JSON string into an object of type PopoverAction. /// - public static StackLayout? Deserialize(string json) + public static PopoverAction? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Layout.Stack**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("type")] - public string Type { get; } = "Layout.Stack"; + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// Controls for which card width the layout should be used. + /// Must be **Action.Popover**. /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } + [JsonPropertyName("type")] + public string Type { get; } = "Action.Popover"; /// - /// Serializes this StackLayout into a JSON string. + /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } - - public StackLayout WithTargetWidth(TargetWidth value) - { - this.TargetWidth = value; - return this; - } -} + [JsonPropertyName("id")] + public string? Id { get; set; } -/// -/// A layout that spreads elements horizontally and wraps them across multiple rows, as needed. -/// -public class FlowLayout : ContainerLayout -{ /// - /// Deserializes a JSON string into an object of type FlowLayout. + /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// - public static FlowLayout? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } + [JsonPropertyName("requires")] + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// - /// Must be **Layout.Flow**. + /// The title of the action, as it appears on buttons. /// - [JsonPropertyName("type")] - public string Type { get; } = "Layout.Flow"; + [JsonPropertyName("title")] + public string? Title { get; set; } /// - /// Controls for which card width the layout should be used. + /// A URL (or Base64-encoded Data URI) to a PNG, GIF, JPEG or SVG image to be displayed on the left of the action's title. + /// + /// `iconUrl` also accepts the `[,regular|filled]` format to display an icon from the vast [Adaptive Card icon catalog](https://adaptivecards.microsoft.com/?topic=icon-catalog) instead of an image. /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } + [JsonPropertyName("iconUrl")] + public string? IconUrl { get; set; } /// - /// Controls how the content of the container should be horizontally aligned. + /// Control the style of the action, affecting its visual and spoken representations. /// - [JsonPropertyName("horizontalItemsAlignment")] - public HorizontalAlignment? HorizontalItemsAlignment { get; set; } + [JsonPropertyName("style")] + public ActionStyle? Style { get; set; } = ActionStyle.Default; /// - /// Controls how the content of the container should be vertically aligned. + /// Controls if the action is primary or secondary. Secondary actions appear in an overflow menu. /// - [JsonPropertyName("verticalItemsAlignment")] - public VerticalAlignment? VerticalItemsAlignment { get; set; } + [JsonPropertyName("mode")] + public ActionMode? Mode { get; set; } = ActionMode.Primary; /// - /// Controls how item should fit inside the container. + /// The tooltip text to display when the action is hovered over. /// - [JsonPropertyName("itemFit")] - public FlowLayoutItemFit? ItemFit { get; set; } + [JsonPropertyName("tooltip")] + public string? Tooltip { get; set; } /// - /// The minimum width, in pixels, of each item, in the `px` format. Should not be used if itemWidth is set. + /// Controls the enabled state of the action. A disabled action cannot be clicked. If the action is represented as a button, the button's style will reflect this state. /// - [JsonPropertyName("minItemWidth")] - public string? MinItemWidth { get; set; } + [JsonPropertyName("isEnabled")] + public bool? IsEnabled { get; set; } = true; /// - /// The maximum width, in pixels, of each item, in the `px` format. Should not be used if itemWidth is set. + /// A set of theme-specific icon URLs. /// - [JsonPropertyName("maxItemWidth")] - public string? MaxItemWidth { get; set; } + [JsonPropertyName("themedIconUrls")] + public IList? ThemedIconUrls { get; set; } /// - /// The width, in pixels, of each item, in the `px` format. Should not be used if maxItemWidth and/or minItemWidth are set. + /// The content of the popover, which can be any element. /// - [JsonPropertyName("itemWidth")] - public string? ItemWidth { get; set; } + [JsonPropertyName("content")] + public CardElement? Content { get; set; } /// - /// The space between items. + /// Controls if an arrow should be displayed towards the element that triggered the popover. /// - [JsonPropertyName("columnSpacing")] - public Spacing? ColumnSpacing { get; set; } + [JsonPropertyName("displayArrow")] + public bool? DisplayArrow { get; set; } = true; /// - /// The space between rows of items. + /// Controls where the popover should be displayed with regards to the element that triggered it. /// - [JsonPropertyName("rowSpacing")] - public Spacing? RowSpacing { get; set; } + [JsonPropertyName("position")] + public PopoverPosition? Position { get; set; } = PopoverPosition.Above; /// - /// Serializes this FlowLayout into a JSON string. + /// The maximum width of the popover in pixels, in the `px` format + /// + [JsonPropertyName("maxPopoverWidth")] + public string? MaxPopoverWidth { get; set; } + + /// + /// An alternate action to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// + [JsonPropertyName("fallback")] + public IUnion? Fallback { get; set; } + + /// + /// Serializes this PopoverAction into a JSON string. /// public string Serialize() { @@ -3099,284 +3504,207 @@ public string Serialize() ); } - public FlowLayout WithTargetWidth(TargetWidth value) + public PopoverAction WithKey(string value) { - this.TargetWidth = value; + this.Key = value; return this; } - public FlowLayout WithHorizontalItemsAlignment(HorizontalAlignment value) + public PopoverAction WithId(string value) { - this.HorizontalItemsAlignment = value; + this.Id = value; return this; } - public FlowLayout WithVerticalItemsAlignment(VerticalAlignment value) + public PopoverAction WithRequires(HostCapabilities value) { - this.VerticalItemsAlignment = value; + this.Requires = value; return this; } - public FlowLayout WithItemFit(FlowLayoutItemFit value) + public PopoverAction WithTitle(string value) { - this.ItemFit = value; + this.Title = value; return this; } - public FlowLayout WithMinItemWidth(string value) + public PopoverAction WithIconUrl(string value) { - this.MinItemWidth = value; + this.IconUrl = value; return this; } - public FlowLayout WithMaxItemWidth(string value) + public PopoverAction WithStyle(ActionStyle value) { - this.MaxItemWidth = value; + this.Style = value; return this; } - public FlowLayout WithItemWidth(string value) + public PopoverAction WithMode(ActionMode value) { - this.ItemWidth = value; + this.Mode = value; return this; } - public FlowLayout WithColumnSpacing(Spacing value) + public PopoverAction WithTooltip(string value) { - this.ColumnSpacing = value; + this.Tooltip = value; return this; } - public FlowLayout WithRowSpacing(Spacing value) + public PopoverAction WithIsEnabled(bool value) { - this.RowSpacing = value; + this.IsEnabled = value; return this; } -} - -/// -/// A layout that divides a container into named areas into which elements can be placed. -/// -public class AreaGridLayout : ContainerLayout -{ - /// - /// Deserializes a JSON string into an object of type AreaGridLayout. - /// - public static AreaGridLayout? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } - - /// - /// Must be **Layout.AreaGrid**. - /// - [JsonPropertyName("type")] - public string Type { get; } = "Layout.AreaGrid"; - - /// - /// Controls for which card width the layout should be used. - /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } - - /// - /// The columns in the grid layout, defined as a percentage of the available width or in pixels using the `px` format. - /// - [JsonPropertyName("columns")] - public IUnion, IList>? Columns { get; set; } - - /// - /// The areas in the grid layout. - /// - [JsonPropertyName("areas")] - public IList? Areas { get; set; } - - /// - /// The space between columns. - /// - [JsonPropertyName("columnSpacing")] - public Spacing? ColumnSpacing { get; set; } - - /// - /// The space between rows. - /// - [JsonPropertyName("rowSpacing")] - public Spacing? RowSpacing { get; set; } - /// - /// Serializes this AreaGridLayout into a JSON string. - /// - public string Serialize() + public PopoverAction WithThemedIconUrls(params IList value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.ThemedIconUrls = value; + return this; } - public AreaGridLayout WithTargetWidth(TargetWidth value) + public PopoverAction WithContent(CardElement value) { - this.TargetWidth = value; + this.Content = value; return this; } - public AreaGridLayout WithColumns(IUnion, IList> value) + public PopoverAction WithDisplayArrow(bool value) { - this.Columns = value; + this.DisplayArrow = value; return this; } - public AreaGridLayout WithAreas(params IList value) + public PopoverAction WithPosition(PopoverPosition value) { - this.Areas = value; + this.Position = value; return this; } - public AreaGridLayout WithColumnSpacing(Spacing value) + public PopoverAction WithMaxPopoverWidth(string value) { - this.ColumnSpacing = value; + this.MaxPopoverWidth = value; return this; } - public AreaGridLayout WithRowSpacing(Spacing value) + public PopoverAction WithFallback(IUnion value) { - this.RowSpacing = value; + this.Fallback = value; return this; } } /// -/// Defines an area in a Layout.AreaGrid layout. +/// Displays a set of action, which can be placed anywhere in the card. /// -public class GridArea : SerializableObject +public class ActionSet : CardElement { /// - /// Deserializes a JSON string into an object of type GridArea. + /// Deserializes a JSON string into an object of type ActionSet. /// - public static GridArea? Deserialize(string json) + public static ActionSet? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The name of the area. To place an element in this area, set its `grid.area` property to match the name of the area. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("name")] - public string? Name { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The start column index of the area. Column indices start at 1. + /// Must be **ActionSet**. /// - [JsonPropertyName("column")] - public float? Column { get; set; } + [JsonPropertyName("type")] + public string Type { get; } = "ActionSet"; /// - /// Defines how many columns the area should span. + /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. /// - [JsonPropertyName("columnSpan")] - public float? ColumnSpan { get; set; } + [JsonPropertyName("id")] + public string? Id { get; set; } /// - /// The start row index of the area. Row indices start at 1. + /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// - [JsonPropertyName("row")] - public float? Row { get; set; } + [JsonPropertyName("requires")] + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// - /// Defines how many rows the area should span. + /// The locale associated with the element. /// - [JsonPropertyName("rowSpan")] - public float? RowSpan { get; set; } + [JsonPropertyName("lang")] + public string? Lang { get; set; } /// - /// Serializes this GridArea into a JSON string. + /// Controls the visibility of the element. /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } - - public GridArea WithName(string value) - { - this.Name = value; - return this; - } + [JsonPropertyName("isVisible")] + public bool? IsVisible { get; set; } = true; - public GridArea WithColumn(float value) - { - this.Column = value; - return this; - } + /// + /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. + /// + [JsonPropertyName("separator")] + public bool? Separator { get; set; } = false; - public GridArea WithColumnSpan(float value) - { - this.ColumnSpan = value; - return this; - } + /// + /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. + /// + [JsonPropertyName("height")] + public ElementHeight? Height { get; set; } = ElementHeight.Auto; - public GridArea WithRow(float value) - { - this.Row = value; - return this; - } + /// + /// Controls how the element should be horizontally aligned. + /// + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } - public GridArea WithRowSpan(float value) - { - this.RowSpan = value; - return this; - } -} + /// + /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. + /// + [JsonPropertyName("spacing")] + public Spacing? Spacing { get; set; } = Spacing.Default; -/// -/// Defines a container's background image and the way it should be rendered. -/// -public class BackgroundImage : SerializableObject -{ /// - /// Deserializes a JSON string into an object of type BackgroundImage. + /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). /// - public static BackgroundImage? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } /// - /// The URL (or Base64-encoded Data URI) of the image. Acceptable formats are PNG, JPEG, GIF and SVG. + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// - [JsonPropertyName("url")] - public string? Url { get; set; } + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; /// - /// Controls how the image should fill the area. + /// The area of a Layout.AreaGrid layout in which an element should be displayed. /// - [JsonPropertyName("fillMode")] - public FillMode? FillMode { get; set; } + [JsonPropertyName("grid.area")] + public string? GridArea { get; set; } /// - /// Controls how the image should be aligned if it must be cropped or if using repeat fill mode. + /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } + [JsonPropertyName("fallback")] + public IUnion? Fallback { get; set; } /// - /// Controls how the image should be aligned if it must be cropped or if using repeat fill mode. + /// The actions in the set. /// - [JsonPropertyName("verticalAlignment")] - public VerticalAlignment? VerticalAlignment { get; set; } + [JsonPropertyName("actions")] + public IList? Actions { get; set; } + + public ActionSet(params IList actions) + { + this.Actions = actions; + } /// - /// Serializes this BackgroundImage into a JSON string. + /// Serializes this ActionSet into a JSON string. /// public string Serialize() { @@ -3390,58 +3718,1721 @@ public string Serialize() ); } - public BackgroundImage WithUrl(string value) + public ActionSet WithKey(string value) { - this.Url = value; + this.Key = value; return this; } - public BackgroundImage WithFillMode(FillMode value) + public ActionSet WithId(string value) { - this.FillMode = value; + this.Id = value; return this; } - public BackgroundImage WithHorizontalAlignment(HorizontalAlignment value) + public ActionSet WithRequires(HostCapabilities value) { - this.HorizontalAlignment = value; + this.Requires = value; return this; } - public BackgroundImage WithVerticalAlignment(VerticalAlignment value) + public ActionSet WithLang(string value) { - this.VerticalAlignment = value; + this.Lang = value; return this; } -} -/// -/// Defines how a card can be refreshed by making a request to the target Bot. -/// -public class RefreshDefinition : SerializableObject + public ActionSet WithIsVisible(bool value) + { + this.IsVisible = value; + return this; + } + + public ActionSet WithSeparator(bool value) + { + this.Separator = value; + return this; + } + + public ActionSet WithHeight(ElementHeight value) + { + this.Height = value; + return this; + } + + public ActionSet WithHorizontalAlignment(HorizontalAlignment value) + { + this.HorizontalAlignment = value; + return this; + } + + public ActionSet WithSpacing(Spacing value) + { + this.Spacing = value; + return this; + } + + public ActionSet WithTargetWidth(TargetWidth value) + { + this.TargetWidth = value; + return this; + } + + public ActionSet WithIsSortKey(bool value) + { + this.IsSortKey = value; + return this; + } + + public ActionSet WithGridArea(string value) + { + this.GridArea = value; + return this; + } + + public ActionSet WithFallback(IUnion value) + { + this.Fallback = value; + return this; + } + + public ActionSet WithActions(params IList value) + { + this.Actions = value; + return this; + } +} + +/// +/// A container for other elements. Use containers for styling purposes and/or to logically group a set of elements together, which can be especially useful when used with Action.ToggleVisibility. +/// +public class Container : CardElement +{ + /// + /// Deserializes a JSON string into an object of type Container. + /// + public static Container? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Container**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "Container"; + + /// + /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. + /// + [JsonPropertyName("id")] + public string? Id { get; set; } + + /// + /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). + /// + [JsonPropertyName("requires")] + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); + + /// + /// The locale associated with the element. + /// + [JsonPropertyName("lang")] + public string? Lang { get; set; } + + /// + /// Controls the visibility of the element. + /// + [JsonPropertyName("isVisible")] + public bool? IsVisible { get; set; } = true; + + /// + /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. + /// + [JsonPropertyName("separator")] + public bool? Separator { get; set; } = false; + + /// + /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. + /// + [JsonPropertyName("height")] + public ElementHeight? Height { get; set; } = ElementHeight.Auto; + + /// + /// Controls how the element should be horizontally aligned. + /// + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } + + /// + /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. + /// + [JsonPropertyName("spacing")] + public Spacing? Spacing { get; set; } = Spacing.Default; + + /// + /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). + /// + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } + + /// + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. + /// + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; + + /// + /// An Action that will be invoked when the element is tapped or clicked. Action.ShowCard is not supported. + /// + [JsonPropertyName("selectAction")] + public Action? SelectAction { get; set; } + + /// + /// The style of the container. Container styles control the colors of the background, border and text inside the container, in such a way that contrast requirements are always met. + /// + [JsonPropertyName("style")] + public ContainerStyle? Style { get; set; } + + /// + /// Controls if a border should be displayed around the container. + /// + [JsonPropertyName("showBorder")] + public bool? ShowBorder { get; set; } = false; + + /// + /// Controls if the container should have rounded corners. + /// + [JsonPropertyName("roundedCorners")] + public bool? RoundedCorners { get; set; } = false; + + /// + /// The layouts associated with the container. The container can dynamically switch from one layout to another as the card's width changes. See [Container layouts](https://adaptivecards.microsoft.com/?topic=container-layouts) for more details. + /// + [JsonPropertyName("layouts")] + public IList? Layouts { get; set; } + + /// + /// Controls if the container should bleed into its parent. A bleeding container extends into its parent's padding. + /// + [JsonPropertyName("bleed")] + public bool? Bleed { get; set; } = false; + + /// + /// The minimum height, in pixels, of the container, in the `px` format. + /// + [JsonPropertyName("minHeight")] + public string? MinHeight { get; set; } + + /// + /// Defines the container's background image. + /// + [JsonPropertyName("backgroundImage")] + public IUnion? BackgroundImage { get; set; } + + /// + /// Controls how the container's content should be vertically aligned. + /// + [JsonPropertyName("verticalContentAlignment")] + public VerticalAlignment? VerticalContentAlignment { get; set; } + + /// + /// Controls if the content of the card is to be rendered left-to-right or right-to-left. + /// + [JsonPropertyName("rtl")] + public bool? Rtl { get; set; } + + /// + /// The maximum height, in pixels, of the container, in the `px` format. When the content of a container exceeds the container's maximum height, a vertical scrollbar is displayed. + /// + [JsonPropertyName("maxHeight")] + public string? MaxHeight { get; set; } + + /// + /// The area of a Layout.AreaGrid layout in which an element should be displayed. + /// + [JsonPropertyName("grid.area")] + public string? GridArea { get; set; } + + /// + /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// + [JsonPropertyName("fallback")] + public IUnion? Fallback { get; set; } + + /// + /// The elements in the container. + /// + [JsonPropertyName("items")] + public IList? Items { get; set; } + + public Container(params IList items) + { + this.Items = items; + } + + /// + /// Serializes this Container into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public Container WithKey(string value) + { + this.Key = value; + return this; + } + + public Container WithId(string value) + { + this.Id = value; + return this; + } + + public Container WithRequires(HostCapabilities value) + { + this.Requires = value; + return this; + } + + public Container WithLang(string value) + { + this.Lang = value; + return this; + } + + public Container WithIsVisible(bool value) + { + this.IsVisible = value; + return this; + } + + public Container WithSeparator(bool value) + { + this.Separator = value; + return this; + } + + public Container WithHeight(ElementHeight value) + { + this.Height = value; + return this; + } + + public Container WithHorizontalAlignment(HorizontalAlignment value) + { + this.HorizontalAlignment = value; + return this; + } + + public Container WithSpacing(Spacing value) + { + this.Spacing = value; + return this; + } + + public Container WithTargetWidth(TargetWidth value) + { + this.TargetWidth = value; + return this; + } + + public Container WithIsSortKey(bool value) + { + this.IsSortKey = value; + return this; + } + + public Container WithSelectAction(Action value) + { + this.SelectAction = value; + return this; + } + + public Container WithStyle(ContainerStyle value) + { + this.Style = value; + return this; + } + + public Container WithShowBorder(bool value) + { + this.ShowBorder = value; + return this; + } + + public Container WithRoundedCorners(bool value) + { + this.RoundedCorners = value; + return this; + } + + public Container WithLayouts(params IList value) + { + this.Layouts = value; + return this; + } + + public Container WithBleed(bool value) + { + this.Bleed = value; + return this; + } + + public Container WithMinHeight(string value) + { + this.MinHeight = value; + return this; + } + + public Container WithBackgroundImage(IUnion value) + { + this.BackgroundImage = value; + return this; + } + + public Container WithVerticalContentAlignment(VerticalAlignment value) + { + this.VerticalContentAlignment = value; + return this; + } + + public Container WithRtl(bool value) + { + this.Rtl = value; + return this; + } + + public Container WithMaxHeight(string value) + { + this.MaxHeight = value; + return this; + } + + public Container WithGridArea(string value) + { + this.GridArea = value; + return this; + } + + public Container WithFallback(IUnion value) + { + this.Fallback = value; + return this; + } + + public Container WithItems(params IList value) + { + this.Items = value; + return this; + } +} + +/// +/// A layout that stacks elements on top of each other. Layout.Stack is the default layout used by AdaptiveCard and all containers. +/// +public class StackLayout : ContainerLayout +{ + /// + /// Deserializes a JSON string into an object of type StackLayout. + /// + public static StackLayout? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Layout.Stack**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "Layout.Stack"; + + /// + /// Controls for which card width the layout should be used. + /// + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } + + /// + /// Serializes this StackLayout into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public StackLayout WithKey(string value) + { + this.Key = value; + return this; + } + + public StackLayout WithTargetWidth(TargetWidth value) + { + this.TargetWidth = value; + return this; + } +} + +/// +/// A layout that spreads elements horizontally and wraps them across multiple rows, as needed. +/// +public class FlowLayout : ContainerLayout +{ + /// + /// Deserializes a JSON string into an object of type FlowLayout. + /// + public static FlowLayout? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Layout.Flow**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "Layout.Flow"; + + /// + /// Controls for which card width the layout should be used. + /// + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } + + /// + /// Controls how the content of the container should be horizontally aligned. + /// + [JsonPropertyName("horizontalItemsAlignment")] + public HorizontalAlignment? HorizontalItemsAlignment { get; set; } = HorizontalAlignment.Center; + + /// + /// Controls how the content of the container should be vertically aligned. + /// + [JsonPropertyName("verticalItemsAlignment")] + public VerticalAlignment? VerticalItemsAlignment { get; set; } = VerticalAlignment.Top; + + /// + /// Controls how item should fit inside the container. + /// + [JsonPropertyName("itemFit")] + public FlowLayoutItemFit? ItemFit { get; set; } = FlowLayoutItemFit.Fit; + + /// + /// The minimum width, in pixels, of each item, in the `px` format. Should not be used if itemWidth is set. + /// + [JsonPropertyName("minItemWidth")] + public string? MinItemWidth { get; set; } + + /// + /// The maximum width, in pixels, of each item, in the `px` format. Should not be used if itemWidth is set. + /// + [JsonPropertyName("maxItemWidth")] + public string? MaxItemWidth { get; set; } + + /// + /// The width, in pixels, of each item, in the `px` format. Should not be used if maxItemWidth and/or minItemWidth are set. + /// + [JsonPropertyName("itemWidth")] + public string? ItemWidth { get; set; } + + /// + /// The space between items. + /// + [JsonPropertyName("columnSpacing")] + public Spacing? ColumnSpacing { get; set; } = Spacing.Default; + + /// + /// The space between rows of items. + /// + [JsonPropertyName("rowSpacing")] + public Spacing? RowSpacing { get; set; } = Spacing.Default; + + /// + /// Serializes this FlowLayout into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public FlowLayout WithKey(string value) + { + this.Key = value; + return this; + } + + public FlowLayout WithTargetWidth(TargetWidth value) + { + this.TargetWidth = value; + return this; + } + + public FlowLayout WithHorizontalItemsAlignment(HorizontalAlignment value) + { + this.HorizontalItemsAlignment = value; + return this; + } + + public FlowLayout WithVerticalItemsAlignment(VerticalAlignment value) + { + this.VerticalItemsAlignment = value; + return this; + } + + public FlowLayout WithItemFit(FlowLayoutItemFit value) + { + this.ItemFit = value; + return this; + } + + public FlowLayout WithMinItemWidth(string value) + { + this.MinItemWidth = value; + return this; + } + + public FlowLayout WithMaxItemWidth(string value) + { + this.MaxItemWidth = value; + return this; + } + + public FlowLayout WithItemWidth(string value) + { + this.ItemWidth = value; + return this; + } + + public FlowLayout WithColumnSpacing(Spacing value) + { + this.ColumnSpacing = value; + return this; + } + + public FlowLayout WithRowSpacing(Spacing value) + { + this.RowSpacing = value; + return this; + } +} + +/// +/// A layout that divides a container into named areas into which elements can be placed. +/// +public class AreaGridLayout : ContainerLayout +{ + /// + /// Deserializes a JSON string into an object of type AreaGridLayout. + /// + public static AreaGridLayout? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Layout.AreaGrid**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "Layout.AreaGrid"; + + /// + /// Controls for which card width the layout should be used. + /// + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } + + /// + /// The columns in the grid layout, defined as a percentage of the available width or in pixels using the `px` format. + /// + [JsonPropertyName("columns")] + public IUnion, IList>? Columns { get; set; } + + /// + /// The areas in the grid layout. + /// + [JsonPropertyName("areas")] + public IList? Areas { get; set; } + + /// + /// The space between columns. + /// + [JsonPropertyName("columnSpacing")] + public Spacing? ColumnSpacing { get; set; } = Spacing.Default; + + /// + /// The space between rows. + /// + [JsonPropertyName("rowSpacing")] + public Spacing? RowSpacing { get; set; } = Spacing.Default; + + /// + /// Serializes this AreaGridLayout into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public AreaGridLayout WithKey(string value) + { + this.Key = value; + return this; + } + + public AreaGridLayout WithTargetWidth(TargetWidth value) + { + this.TargetWidth = value; + return this; + } + + public AreaGridLayout WithColumns(IUnion, IList> value) + { + this.Columns = value; + return this; + } + + public AreaGridLayout WithAreas(params IList value) + { + this.Areas = value; + return this; + } + + public AreaGridLayout WithColumnSpacing(Spacing value) + { + this.ColumnSpacing = value; + return this; + } + + public AreaGridLayout WithRowSpacing(Spacing value) + { + this.RowSpacing = value; + return this; + } +} + +/// +/// Defines an area in a Layout.AreaGrid layout. +/// +public class GridArea : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type GridArea. + /// + public static GridArea? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The name of the area. To place an element in this area, set its `grid.area` property to match the name of the area. + /// + [JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// The start column index of the area. Column indices start at 1. + /// + [JsonPropertyName("column")] + public float? Column { get; set; } = 1; + + /// + /// Defines how many columns the area should span. + /// + [JsonPropertyName("columnSpan")] + public float? ColumnSpan { get; set; } = 1; + + /// + /// The start row index of the area. Row indices start at 1. + /// + [JsonPropertyName("row")] + public float? Row { get; set; } = 1; + + /// + /// Defines how many rows the area should span. + /// + [JsonPropertyName("rowSpan")] + public float? RowSpan { get; set; } = 1; + + /// + /// Serializes this GridArea into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public GridArea WithKey(string value) + { + this.Key = value; + return this; + } + + public GridArea WithName(string value) + { + this.Name = value; + return this; + } + + public GridArea WithColumn(float value) + { + this.Column = value; + return this; + } + + public GridArea WithColumnSpan(float value) + { + this.ColumnSpan = value; + return this; + } + + public GridArea WithRow(float value) + { + this.Row = value; + return this; + } + + public GridArea WithRowSpan(float value) + { + this.RowSpan = value; + return this; + } +} + +/// +/// Defines a container's background image and the way it should be rendered. +/// +public class BackgroundImage : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type BackgroundImage. + /// + public static BackgroundImage? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The URL (or Base64-encoded Data URI) of the image. Acceptable formats are PNG, JPEG, GIF and SVG. + /// + [JsonPropertyName("url")] + public string? Url { get; set; } + + /// + /// Controls how the image should fill the area. + /// + [JsonPropertyName("fillMode")] + public FillMode? FillMode { get; set; } = FillMode.Cover; + + /// + /// Controls how the image should be aligned if it must be cropped or if using repeat fill mode. + /// + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } = HorizontalAlignment.Left; + + /// + /// Controls how the image should be aligned if it must be cropped or if using repeat fill mode. + /// + [JsonPropertyName("verticalAlignment")] + public VerticalAlignment? VerticalAlignment { get; set; } = VerticalAlignment.Top; + + /// + /// A set of theme-specific image URLs. + /// + [JsonPropertyName("themedUrls")] + public IList? ThemedUrls { get; set; } + + /// + /// Serializes this BackgroundImage into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public BackgroundImage WithKey(string value) + { + this.Key = value; + return this; + } + + public BackgroundImage WithUrl(string value) + { + this.Url = value; + return this; + } + + public BackgroundImage WithFillMode(FillMode value) + { + this.FillMode = value; + return this; + } + + public BackgroundImage WithHorizontalAlignment(HorizontalAlignment value) + { + this.HorizontalAlignment = value; + return this; + } + + public BackgroundImage WithVerticalAlignment(VerticalAlignment value) + { + this.VerticalAlignment = value; + return this; + } + + public BackgroundImage WithThemedUrls(params IList value) + { + this.ThemedUrls = value; + return this; + } +} + +/// +/// Splits the available horizontal space into separate columns, so elements can be organized in a row. +/// +public class ColumnSet : CardElement +{ + /// + /// Deserializes a JSON string into an object of type ColumnSet. + /// + public static ColumnSet? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **ColumnSet**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "ColumnSet"; + + /// + /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. + /// + [JsonPropertyName("id")] + public string? Id { get; set; } + + /// + /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). + /// + [JsonPropertyName("requires")] + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); + + /// + /// The locale associated with the element. + /// + [JsonPropertyName("lang")] + public string? Lang { get; set; } + + /// + /// Controls the visibility of the element. + /// + [JsonPropertyName("isVisible")] + public bool? IsVisible { get; set; } = true; + + /// + /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. + /// + [JsonPropertyName("separator")] + public bool? Separator { get; set; } = false; + + /// + /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. + /// + [JsonPropertyName("height")] + public ElementHeight? Height { get; set; } = ElementHeight.Auto; + + /// + /// Controls how the element should be horizontally aligned. + /// + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } + + /// + /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. + /// + [JsonPropertyName("spacing")] + public Spacing? Spacing { get; set; } = Spacing.Default; + + /// + /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). + /// + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } + + /// + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. + /// + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; + + /// + /// An Action that will be invoked when the element is tapped or clicked. Action.ShowCard is not supported. + /// + [JsonPropertyName("selectAction")] + public Action? SelectAction { get; set; } + + /// + /// The style of the container. Container styles control the colors of the background, border and text inside the container, in such a way that contrast requirements are always met. + /// + [JsonPropertyName("style")] + public ContainerStyle? Style { get; set; } + + /// + /// Controls if a border should be displayed around the container. + /// + [JsonPropertyName("showBorder")] + public bool? ShowBorder { get; set; } = false; + + /// + /// Controls if the container should have rounded corners. + /// + [JsonPropertyName("roundedCorners")] + public bool? RoundedCorners { get; set; } = false; + + /// + /// Controls if the container should bleed into its parent. A bleeding container extends into its parent's padding. + /// + [JsonPropertyName("bleed")] + public bool? Bleed { get; set; } = false; + + /// + /// The minimum height, in pixels, of the container, in the `px` format. + /// + [JsonPropertyName("minHeight")] + public string? MinHeight { get; set; } + + /// + /// The minimum width of the column set. `auto` will automatically adjust the column set's minimum width according to its content and using the `px` format will give the column set an explicit minimum width in pixels. A scrollbar will be displayed if the available width is less than the specified minimum width. + /// + [JsonPropertyName("minWidth")] + public string? MinWidth { get; set; } + + /// + /// The area of a Layout.AreaGrid layout in which an element should be displayed. + /// + [JsonPropertyName("grid.area")] + public string? GridArea { get; set; } + + /// + /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// + [JsonPropertyName("fallback")] + public IUnion? Fallback { get; set; } + + /// + /// The columns in the set. + /// + [JsonPropertyName("columns")] + public IList? Columns { get; set; } + + /// + /// Serializes this ColumnSet into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public ColumnSet WithKey(string value) + { + this.Key = value; + return this; + } + + public ColumnSet WithId(string value) + { + this.Id = value; + return this; + } + + public ColumnSet WithRequires(HostCapabilities value) + { + this.Requires = value; + return this; + } + + public ColumnSet WithLang(string value) + { + this.Lang = value; + return this; + } + + public ColumnSet WithIsVisible(bool value) + { + this.IsVisible = value; + return this; + } + + public ColumnSet WithSeparator(bool value) + { + this.Separator = value; + return this; + } + + public ColumnSet WithHeight(ElementHeight value) + { + this.Height = value; + return this; + } + + public ColumnSet WithHorizontalAlignment(HorizontalAlignment value) + { + this.HorizontalAlignment = value; + return this; + } + + public ColumnSet WithSpacing(Spacing value) + { + this.Spacing = value; + return this; + } + + public ColumnSet WithTargetWidth(TargetWidth value) + { + this.TargetWidth = value; + return this; + } + + public ColumnSet WithIsSortKey(bool value) + { + this.IsSortKey = value; + return this; + } + + public ColumnSet WithSelectAction(Action value) + { + this.SelectAction = value; + return this; + } + + public ColumnSet WithStyle(ContainerStyle value) + { + this.Style = value; + return this; + } + + public ColumnSet WithShowBorder(bool value) + { + this.ShowBorder = value; + return this; + } + + public ColumnSet WithRoundedCorners(bool value) + { + this.RoundedCorners = value; + return this; + } + + public ColumnSet WithBleed(bool value) + { + this.Bleed = value; + return this; + } + + public ColumnSet WithMinHeight(string value) + { + this.MinHeight = value; + return this; + } + + public ColumnSet WithMinWidth(string value) + { + this.MinWidth = value; + return this; + } + + public ColumnSet WithGridArea(string value) + { + this.GridArea = value; + return this; + } + + public ColumnSet WithFallback(IUnion value) + { + this.Fallback = value; + return this; + } + + public ColumnSet WithColumns(params IList value) + { + this.Columns = value; + return this; + } +} + +/// +/// A media element, that makes it possible to embed videos inside a card. +/// +public class Media : CardElement +{ + /// + /// Deserializes a JSON string into an object of type Media. + /// + public static Media? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Media**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "Media"; + + /// + /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. + /// + [JsonPropertyName("id")] + public string? Id { get; set; } + + /// + /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). + /// + [JsonPropertyName("requires")] + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); + + /// + /// The locale associated with the element. + /// + [JsonPropertyName("lang")] + public string? Lang { get; set; } + + /// + /// Controls the visibility of the element. + /// + [JsonPropertyName("isVisible")] + public bool? IsVisible { get; set; } = true; + + /// + /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. + /// + [JsonPropertyName("separator")] + public bool? Separator { get; set; } = false; + + /// + /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. + /// + [JsonPropertyName("height")] + public ElementHeight? Height { get; set; } = ElementHeight.Auto; + + /// + /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. + /// + [JsonPropertyName("spacing")] + public Spacing? Spacing { get; set; } = Spacing.Default; + + /// + /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). + /// + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } + + /// + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. + /// + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; + + /// + /// The sources for the media. For YouTube, Dailymotion and Vimeo, only one source can be specified. + /// + [JsonPropertyName("sources")] + public IList? Sources { get; set; } + + /// + /// The caption sources for the media. Caption sources are not used for YouTube, Dailymotion or Vimeo sources. + /// + [JsonPropertyName("captionSources")] + public IList? CaptionSources { get; set; } + + /// + /// The URL of the poster image to display. + /// + [JsonPropertyName("poster")] + public string? Poster { get; set; } + + /// + /// The alternate text for the media, used for accessibility purposes. + /// + [JsonPropertyName("altText")] + public string? AltText { get; set; } + + /// + /// The area of a Layout.AreaGrid layout in which an element should be displayed. + /// + [JsonPropertyName("grid.area")] + public string? GridArea { get; set; } + + /// + /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// + [JsonPropertyName("fallback")] + public IUnion? Fallback { get; set; } + + /// + /// Serializes this Media into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public Media WithKey(string value) + { + this.Key = value; + return this; + } + + public Media WithId(string value) + { + this.Id = value; + return this; + } + + public Media WithRequires(HostCapabilities value) + { + this.Requires = value; + return this; + } + + public Media WithLang(string value) + { + this.Lang = value; + return this; + } + + public Media WithIsVisible(bool value) + { + this.IsVisible = value; + return this; + } + + public Media WithSeparator(bool value) + { + this.Separator = value; + return this; + } + + public Media WithHeight(ElementHeight value) + { + this.Height = value; + return this; + } + + public Media WithSpacing(Spacing value) + { + this.Spacing = value; + return this; + } + + public Media WithTargetWidth(TargetWidth value) + { + this.TargetWidth = value; + return this; + } + + public Media WithIsSortKey(bool value) + { + this.IsSortKey = value; + return this; + } + + public Media WithSources(params IList value) + { + this.Sources = value; + return this; + } + + public Media WithCaptionSources(params IList value) + { + this.CaptionSources = value; + return this; + } + + public Media WithPoster(string value) + { + this.Poster = value; + return this; + } + + public Media WithAltText(string value) + { + this.AltText = value; + return this; + } + + public Media WithGridArea(string value) + { + this.GridArea = value; + return this; + } + + public Media WithFallback(IUnion value) + { + this.Fallback = value; + return this; + } +} + +/// +/// Defines the source URL of a media stream. YouTube, Dailymotion, Vimeo and Microsoft Stream URLs are supported. +/// +public class MediaSource : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type MediaSource. + /// + public static MediaSource? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The MIME type of the source. + /// + [JsonPropertyName("mimeType")] + public string? MimeType { get; set; } + + /// + /// The URL of the source. + /// + [JsonPropertyName("url")] + public string? Url { get; set; } + + /// + /// Serializes this MediaSource into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public MediaSource WithKey(string value) + { + this.Key = value; + return this; + } + + public MediaSource WithMimeType(string value) + { + this.MimeType = value; + return this; + } + + public MediaSource WithUrl(string value) + { + this.Url = value; + return this; + } +} + +/// +/// Defines a source URL for a video captions. +/// +public class CaptionSource : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type CaptionSource. + /// + public static CaptionSource? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The MIME type of the source. + /// + [JsonPropertyName("mimeType")] + public string? MimeType { get; set; } + + /// + /// The URL of the source. + /// + [JsonPropertyName("url")] + public string? Url { get; set; } + + /// + /// The label of this caption source. + /// + [JsonPropertyName("label")] + public string? Label { get; set; } + + /// + /// Serializes this CaptionSource into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public CaptionSource WithKey(string value) + { + this.Key = value; + return this; + } + + public CaptionSource WithMimeType(string value) + { + this.MimeType = value; + return this; + } + + public CaptionSource WithUrl(string value) + { + this.Url = value; + return this; + } + + public CaptionSource WithLabel(string value) + { + this.Label = value; + return this; + } +} + +/// +/// A rich text block that displays formatted text. +/// +public class RichTextBlock : CardElement { /// - /// Deserializes a JSON string into an object of type RefreshDefinition. + /// Deserializes a JSON string into an object of type RichTextBlock. /// - public static RefreshDefinition? Deserialize(string json) + public static RichTextBlock? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The Action.Execute action to invoke to refresh the card. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("action")] - public ExecuteAction? Action { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The list of user Ids for which the card will be automatically refreshed. In Teams, in chats or channels with more than 60 users, the card will automatically refresh only for users specified in the userIds list. Other users will have to manually click on a "refresh" button. In contexts with fewer than 60 users, the card will automatically refresh for all users. + /// Must be **RichTextBlock**. /// - [JsonPropertyName("userIds")] - public IList? UserIds { get; set; } + [JsonPropertyName("type")] + public string Type { get; } = "RichTextBlock"; /// - /// Serializes this RefreshDefinition into a JSON string. + /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. + /// + [JsonPropertyName("id")] + public string? Id { get; set; } + + /// + /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). + /// + [JsonPropertyName("requires")] + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); + + /// + /// The locale associated with the element. + /// + [JsonPropertyName("lang")] + public string? Lang { get; set; } + + /// + /// Controls the visibility of the element. + /// + [JsonPropertyName("isVisible")] + public bool? IsVisible { get; set; } = true; + + /// + /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. + /// + [JsonPropertyName("separator")] + public bool? Separator { get; set; } = false; + + /// + /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. + /// + [JsonPropertyName("height")] + public ElementHeight? Height { get; set; } = ElementHeight.Auto; + + /// + /// Controls how the element should be horizontally aligned. + /// + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } + + /// + /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. + /// + [JsonPropertyName("spacing")] + public Spacing? Spacing { get; set; } = Spacing.Default; + + /// + /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). + /// + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } + + /// + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. + /// + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; + + /// + /// The Id of the input the RichTextBlock should act as the label of. + /// + [JsonPropertyName("labelFor")] + public string? LabelFor { get; set; } + + /// + /// The area of a Layout.AreaGrid layout in which an element should be displayed. + /// + [JsonPropertyName("grid.area")] + public string? GridArea { get; set; } + + /// + /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// + [JsonPropertyName("fallback")] + public IUnion? Fallback { get; set; } + + /// + /// The inlines making up the rich text block. + /// + [JsonPropertyName("inlines")] + public IUnion, IList>? Inlines { get; set; } + + /// + /// Serializes this RichTextBlock into a JSON string. /// public string Serialize() { @@ -3455,135 +5446,262 @@ public string Serialize() ); } - public RefreshDefinition WithAction(ExecuteAction value) + public RichTextBlock WithKey(string value) { - this.Action = value; + this.Key = value; + return this; + } + + public RichTextBlock WithId(string value) + { + this.Id = value; + return this; + } + + public RichTextBlock WithRequires(HostCapabilities value) + { + this.Requires = value; + return this; + } + + public RichTextBlock WithLang(string value) + { + this.Lang = value; + return this; + } + + public RichTextBlock WithIsVisible(bool value) + { + this.IsVisible = value; + return this; + } + + public RichTextBlock WithSeparator(bool value) + { + this.Separator = value; + return this; + } + + public RichTextBlock WithHeight(ElementHeight value) + { + this.Height = value; + return this; + } + + public RichTextBlock WithHorizontalAlignment(HorizontalAlignment value) + { + this.HorizontalAlignment = value; + return this; + } + + public RichTextBlock WithSpacing(Spacing value) + { + this.Spacing = value; + return this; + } + + public RichTextBlock WithTargetWidth(TargetWidth value) + { + this.TargetWidth = value; + return this; + } + + public RichTextBlock WithIsSortKey(bool value) + { + this.IsSortKey = value; + return this; + } + + public RichTextBlock WithLabelFor(string value) + { + this.LabelFor = value; + return this; + } + + public RichTextBlock WithGridArea(string value) + { + this.GridArea = value; + return this; + } + + public RichTextBlock WithFallback(IUnion value) + { + this.Fallback = value; + return this; + } + + public RichTextBlock WithInlines(IUnion, IList> value) + { + this.Inlines = value; return this; } +} + +/// +/// Use tables to display data in a tabular way, with rows, columns and cells. +/// +public class Table : CardElement +{ + /// + /// Deserializes a JSON string into an object of type Table. + /// + public static Table? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Table**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "Table"; + + /// + /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. + /// + [JsonPropertyName("id")] + public string? Id { get; set; } + + /// + /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). + /// + [JsonPropertyName("requires")] + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); + + /// + /// The locale associated with the element. + /// + [JsonPropertyName("lang")] + public string? Lang { get; set; } + + /// + /// Controls the visibility of the element. + /// + [JsonPropertyName("isVisible")] + public bool? IsVisible { get; set; } = true; + + /// + /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. + /// + [JsonPropertyName("separator")] + public bool? Separator { get; set; } = false; + + /// + /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. + /// + [JsonPropertyName("height")] + public ElementHeight? Height { get; set; } = ElementHeight.Auto; + + /// + /// Controls how the element should be horizontally aligned. + /// + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } - public RefreshDefinition WithUserIds(params IList value) - { - this.UserIds = value; - return this; - } -} + /// + /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. + /// + [JsonPropertyName("spacing")] + public Spacing? Spacing { get; set; } = Spacing.Default; -/// -/// Defines authentication information associated with a card. For more information, refer to the [Bot Framework OAuthCard type](https://docs.microsoft.com/dotnet/api/microsoft.bot.schema.oauthcard) -/// -public class Authentication : SerializableObject -{ /// - /// Deserializes a JSON string into an object of type Authentication. + /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). /// - public static Authentication? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } /// - /// The text that can be displayed to the end user when prompting them to authenticate. + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// - [JsonPropertyName("text")] - public string? Text { get; set; } + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; /// - /// The identifier for registered OAuth connection setting information. + /// The style of the container. Container styles control the colors of the background, border and text inside the container, in such a way that contrast requirements are always met. /// - [JsonPropertyName("connectionName")] - public string? ConnectionName { get; set; } + [JsonPropertyName("style")] + public ContainerStyle? Style { get; set; } /// - /// The buttons that should be displayed to the user when prompting for authentication. The array MUST contain one button of type “signin”. Other button types are not currently supported. + /// Controls if a border should be displayed around the container. /// - [JsonPropertyName("buttons")] - public IList? Buttons { get; set; } + [JsonPropertyName("showBorder")] + public bool? ShowBorder { get; set; } = false; /// - /// Provides information required to enable on-behalf-of single sign-on user authentication. + /// Controls if the container should have rounded corners. /// - [JsonPropertyName("tokenExchangeResource")] - public TokenExchangeResource? TokenExchangeResource { get; set; } + [JsonPropertyName("roundedCorners")] + public bool? RoundedCorners { get; set; } = false; /// - /// Serializes this Authentication into a JSON string. + /// The columns in the table. /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } + [JsonPropertyName("columns")] + public IList? Columns { get; set; } - public Authentication WithText(string value) - { - this.Text = value; - return this; - } + /// + /// The minimum width of the table in pixels. `auto` will automatically adjust the table's minimum width according to its content and using the `px` format will give the table an explicit minimum width in pixels. A scrollbar will be displayed if the available width is less than the specified minimum width. + /// + [JsonPropertyName("minWidth")] + public string? MinWidth { get; set; } - public Authentication WithConnectionName(string value) - { - this.ConnectionName = value; - return this; - } + /// + /// Controls whether the first row of the table should be treated as a header. + /// + [JsonPropertyName("firstRowAsHeaders")] + public bool? FirstRowAsHeaders { get; set; } = true; - public Authentication WithButtons(params IList value) - { - this.Buttons = value; - return this; - } + /// + /// Controls if grid lines should be displayed. + /// + [JsonPropertyName("showGridLines")] + public bool? ShowGridLines { get; set; } = true; - public Authentication WithTokenExchangeResource(TokenExchangeResource value) - { - this.TokenExchangeResource = value; - return this; - } -} + /// + /// The style of the grid lines between cells. + /// + [JsonPropertyName("gridStyle")] + public ContainerStyle? GridStyle { get; set; } -/// -/// Defines a button as displayed when prompting a user to authenticate. For more information, refer to the [Bot Framework CardAction type](https://docs.microsoft.com/dotnet/api/microsoft.bot.schema.cardaction). -/// -public class AuthCardButton : SerializableObject -{ /// - /// Deserializes a JSON string into an object of type AuthCardButton. + /// Controls how the content of every cell in the table should be horizontally aligned by default. /// - public static AuthCardButton? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } + [JsonPropertyName("horizontalCellContentAlignment")] + public HorizontalAlignment? HorizontalCellContentAlignment { get; set; } /// - /// Must be **signin**. + /// Controls how the content of every cell in the table should be vertically aligned by default. /// - [JsonPropertyName("type")] - public string? Type { get; set; } + [JsonPropertyName("verticalCellContentAlignment")] + public VerticalAlignment? VerticalCellContentAlignment { get; set; } /// - /// The caption of the button. + /// The area of a Layout.AreaGrid layout in which an element should be displayed. /// - [JsonPropertyName("title")] - public string? Title { get; set; } + [JsonPropertyName("grid.area")] + public string? GridArea { get; set; } /// - /// A URL to an image to display alongside the button’s caption. + /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. /// - [JsonPropertyName("image")] - public string? Image { get; set; } + [JsonPropertyName("fallback")] + public IUnion? Fallback { get; set; } /// - /// The value associated with the button. The meaning of value depends on the button’s type. + /// The rows of the table. /// - [JsonPropertyName("value")] - public string? Value { get; set; } + [JsonPropertyName("rows")] + public IList? Rows { get; set; } /// - /// Serializes this AuthCardButton into a JSON string. + /// Serializes this Table into a JSON string. /// public string Serialize() { @@ -3597,243 +5715,190 @@ public string Serialize() ); } - public AuthCardButton WithType(string value) + public Table WithKey(string value) { - this.Type = value; + this.Key = value; return this; } - public AuthCardButton WithTitle(string value) + public Table WithId(string value) { - this.Title = value; + this.Id = value; return this; } - public AuthCardButton WithImage(string value) + public Table WithRequires(HostCapabilities value) { - this.Image = value; + this.Requires = value; return this; } - public AuthCardButton WithValue(string value) + public Table WithLang(string value) { - this.Value = value; + this.Lang = value; return this; } -} -/// -/// Defines information required to enable on-behalf-of single sign-on user authentication. For more information, refer to the [Bot Framework TokenExchangeResource type](https://docs.microsoft.com/dotnet/api/microsoft.bot.schema.tokenexchangeresource) -/// -public class TokenExchangeResource : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type TokenExchangeResource. - /// - public static TokenExchangeResource? Deserialize(string json) + public Table WithIsVisible(bool value) { - return JsonSerializer.Deserialize(json); + this.IsVisible = value; + return this; } - /// - /// The unique identified of this token exchange instance. - /// - [JsonPropertyName("id")] - public string? Id { get; set; } - - /// - /// An application ID or resource identifier with which to exchange a token on behalf of. This property is identity provider- and application-specific. - /// - [JsonPropertyName("uri")] - public string? Uri { get; set; } + public Table WithSeparator(bool value) + { + this.Separator = value; + return this; + } - /// - /// An identifier for the identity provider with which to attempt a token exchange. - /// - [JsonPropertyName("providerId")] - public string? ProviderId { get; set; } + public Table WithHeight(ElementHeight value) + { + this.Height = value; + return this; + } - /// - /// Serializes this TokenExchangeResource into a JSON string. - /// - public string Serialize() + public Table WithHorizontalAlignment(HorizontalAlignment value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.HorizontalAlignment = value; + return this; } - public TokenExchangeResource WithId(string value) + public Table WithSpacing(Spacing value) { - this.Id = value; + this.Spacing = value; return this; } - public TokenExchangeResource WithUri(string value) + public Table WithTargetWidth(TargetWidth value) { - this.Uri = value; + this.TargetWidth = value; return this; } - public TokenExchangeResource WithProviderId(string value) + public Table WithIsSortKey(bool value) { - this.ProviderId = value; + this.IsSortKey = value; return this; } -} -/// -/// Represents a set of Teams-specific properties on a card. -/// -public class TeamsCardProperties : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type TeamsCardProperties. - /// - public static TeamsCardProperties? Deserialize(string json) + public Table WithStyle(ContainerStyle value) { - return JsonSerializer.Deserialize(json); + this.Style = value; + return this; } - /// - /// Controls the width of the card in a Teams chat. - /// - /// Note that setting `width` to "full" will not actually stretch the card to the "full width" of the chat pane. It will only make the card wider than when the `width` property isn't set. - /// - [JsonPropertyName("width")] - public TeamsCardWidth? Width { get; set; } + public Table WithShowBorder(bool value) + { + this.ShowBorder = value; + return this; + } - /// - /// The Teams-specific entities associated with the card. - /// - [JsonPropertyName("entities")] - public IList? Entities { get; set; } + public Table WithRoundedCorners(bool value) + { + this.RoundedCorners = value; + return this; + } - /// - /// Serializes this TeamsCardProperties into a JSON string. - /// - public string Serialize() + public Table WithColumns(params IList value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.Columns = value; + return this; } - public TeamsCardProperties WithWidth(TeamsCardWidth value) + public Table WithMinWidth(string value) { - this.Width = value; + this.MinWidth = value; return this; } - public TeamsCardProperties WithEntities(params IList value) + public Table WithFirstRowAsHeaders(bool value) { - this.Entities = value; + this.FirstRowAsHeaders = value; return this; } -} -/// -/// Represents a mention to a person. -/// -public class Mention : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type Mention. - /// - public static Mention? Deserialize(string json) + public Table WithShowGridLines(bool value) { - return JsonSerializer.Deserialize(json); + this.ShowGridLines = value; + return this; } - /// - /// Must be **mention**. - /// - [JsonPropertyName("type")] - public string Type { get; } = "mention"; + public Table WithGridStyle(ContainerStyle value) + { + this.GridStyle = value; + return this; + } - /// - /// The text that will be substituted with the mention. - /// - [JsonPropertyName("text")] - public string? Text { get; set; } + public Table WithHorizontalCellContentAlignment(HorizontalAlignment value) + { + this.HorizontalCellContentAlignment = value; + return this; + } - /// - /// Defines the entity being mentioned. - /// - [JsonPropertyName("mentioned")] - public MentionedEntity? Mentioned { get; set; } + public Table WithVerticalCellContentAlignment(VerticalAlignment value) + { + this.VerticalCellContentAlignment = value; + return this; + } - /// - /// Serializes this Mention into a JSON string. - /// - public string Serialize() + public Table WithGridArea(string value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.GridArea = value; + return this; } - public Mention WithText(string value) + public Table WithFallback(IUnion value) { - this.Text = value; + this.Fallback = value; return this; } - public Mention WithMentioned(MentionedEntity value) + public Table WithRows(params IList value) { - this.Mentioned = value; + this.Rows = value; return this; } } /// -/// Represents a mentioned person or tag. +/// Defines a column in a Table element. /// -public class MentionedEntity : SerializableObject +public class ColumnDefinition : SerializableObject { /// - /// Deserializes a JSON string into an object of type MentionedEntity. + /// Deserializes a JSON string into an object of type ColumnDefinition. /// - public static MentionedEntity? Deserialize(string json) + public static ColumnDefinition? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The Id of a person (typically a Microsoft Entra user Id) or tag. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("id")] - public string? Id { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The name of the mentioned entity. + /// Controls how the content of every cell in the table should be horizontally aligned by default. This property overrides the horizontalCellContentAlignment property of the table. /// - [JsonPropertyName("name")] - public string? Name { get; set; } + [JsonPropertyName("horizontalCellContentAlignment")] + public HorizontalAlignment? HorizontalCellContentAlignment { get; set; } /// - /// The type of the mentioned entity. + /// Controls how the content of every cell in the column should be vertically aligned by default. This property overrides the verticalCellContentAlignment property of the table. /// - [JsonPropertyName("mentionType")] - public MentionType? MentionType { get; set; } + [JsonPropertyName("verticalCellContentAlignment")] + public VerticalAlignment? VerticalCellContentAlignment { get; set; } /// - /// Serializes this MentionedEntity into a JSON string. + /// The width of the column in the table. If expressed as a number, represents the relative weight of the column in the table. If expressed as a string, `auto` will automatically adjust the column's width according to its content and using the `px` format will give the column an explicit width in pixels. + /// + [JsonPropertyName("width")] + public IUnion? Width { get; set; } + + /// + /// Serializes this ColumnDefinition into a JSON string. /// public string Serialize() { @@ -3847,84 +5912,55 @@ public string Serialize() ); } - public MentionedEntity WithId(string value) + public ColumnDefinition WithKey(string value) { - this.Id = value; + this.Key = value; return this; } - public MentionedEntity WithName(string value) + public ColumnDefinition WithHorizontalCellContentAlignment(HorizontalAlignment value) { - this.Name = value; + this.HorizontalCellContentAlignment = value; return this; } - public MentionedEntity WithMentionType(MentionType value) + public ColumnDefinition WithVerticalCellContentAlignment(VerticalAlignment value) { - this.MentionType = value; + this.VerticalCellContentAlignment = value; return this; } -} - -/// -/// Card-level metadata. -/// -public class CardMetadata : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type CardMetadata. - /// - public static CardMetadata? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } - - /// - /// The URL the card originates from. When `webUrl` is set, the card is dubbed an **Adaptive Card-based Loop Component** and, when pasted in Teams or other Loop Component-capable host applications, the URL will unfurl to the same exact card. - /// - [JsonPropertyName("webUrl")] - public string? WebUrl { get; set; } - - /// - /// Serializes this CardMetadata into a JSON string. - /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } - public CardMetadata WithWebUrl(string value) + public ColumnDefinition WithWidth(IUnion value) { - this.WebUrl = value; + this.Width = value; return this; } } /// -/// A container for other elements. Use containers for styling purposes and/or to logically group a set of elements together, which can be especially useful when used with Action.ToggleVisibility. +/// A block of text, optionally formatted using Markdown. /// -public class Container : CardElement +public class TextBlock : CardElement { /// - /// Deserializes a JSON string into an object of type Container. + /// Deserializes a JSON string into an object of type TextBlock. /// - public static Container? Deserialize(string json) + public static TextBlock? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Container**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **TextBlock**. /// [JsonPropertyName("type")] - public string Type { get; } = "Container"; + public string Type { get; } = "TextBlock"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -3936,7 +5972,7 @@ public class Container : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -3948,19 +5984,19 @@ public class Container : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -3972,7 +6008,7 @@ public class Container : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -3984,73 +6020,67 @@ public class Container : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// An Action that will be invoked when the element is tapped or clicked. Action.ShowCard is not supported. - /// - [JsonPropertyName("selectAction")] - public Action? SelectAction { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The style of the container. Container styles control the colors of the background, border and text inside the container, in such a way that contrast requirements are always met. + /// The text to display. A subset of markdown is supported. /// - [JsonPropertyName("style")] - public ContainerStyle? Style { get; set; } + [JsonPropertyName("text")] + public string? Text { get; set; } /// - /// Controls if a border should be displayed around the container. + /// The size of the text. /// - [JsonPropertyName("showBorder")] - public bool? ShowBorder { get; set; } + [JsonPropertyName("size")] + public TextSize? Size { get; set; } /// - /// Controls if the container should have rounded corners. + /// The weight of the text. /// - [JsonPropertyName("roundedCorners")] - public bool? RoundedCorners { get; set; } + [JsonPropertyName("weight")] + public TextWeight? Weight { get; set; } /// - /// The layouts associated with the container. The container can dynamically switch from one layout to another as the card's width changes. See [Container layouts](https://adaptivecards.microsoft.com/?topic=container-layouts) for more details. + /// The color of the text. /// - [JsonPropertyName("layouts")] - public IList? Layouts { get; set; } + [JsonPropertyName("color")] + public TextColor? Color { get; set; } /// - /// Controls if the container should bleed into its parent. A bleeding container extends into its parent's padding. + /// Controls whether the text should be renderer using a subtler variant of the select color. /// - [JsonPropertyName("bleed")] - public bool? Bleed { get; set; } + [JsonPropertyName("isSubtle")] + public bool? IsSubtle { get; set; } /// - /// The minimum height, in pixels, of the container, in the `px` format. + /// The type of font to use for rendering. /// - [JsonPropertyName("minHeight")] - public string? MinHeight { get; set; } + [JsonPropertyName("fontType")] + public FontType? FontType { get; set; } /// - /// Defines the container's background image. + /// Controls if the text should wrap. /// - [JsonPropertyName("backgroundImage")] - public IUnion? BackgroundImage { get; set; } + [JsonPropertyName("wrap")] + public bool? Wrap { get; set; } = false; /// - /// Controls how the container's content should be vertically aligned. + /// The maximum number of lines to display. /// - [JsonPropertyName("verticalContentAlignment")] - public VerticalAlignment? VerticalContentAlignment { get; set; } + [JsonPropertyName("maxLines")] + public float? MaxLines { get; set; } /// - /// Controls if the content of the card is to be rendered left-to-right or right-to-left. + /// The style of the text. /// - [JsonPropertyName("rtl")] - public bool? Rtl { get; set; } + [JsonPropertyName("style")] + public TextBlockStyle? Style { get; set; } /// - /// The maximum height, in pixels, of the container, in the `px` format. When the content of a container exceeds the container's maximum height, a vertical scrollbar is displayed. + /// The Id of the input the TextBlock should act as the label of. /// - [JsonPropertyName("maxHeight")] - public string? MaxHeight { get; set; } + [JsonPropertyName("labelFor")] + public string? LabelFor { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -4064,19 +6094,13 @@ public class Container : CardElement [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } - /// - /// The elements in the container. - /// - [JsonPropertyName("items")] - public IList? Items { get; set; } - - public Container(params IList items) + public TextBlock(string text) { - this.Items = items; + this.Text = text; } /// - /// Serializes this Container into a JSON string. + /// Serializes this TextBlock into a JSON string. /// public string Serialize() { @@ -4090,169 +6114,169 @@ public string Serialize() ); } - public Container WithId(string value) + public TextBlock WithKey(string value) + { + this.Key = value; + return this; + } + + public TextBlock WithId(string value) { this.Id = value; return this; } - public Container WithRequires(HostCapabilities value) + public TextBlock WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public Container WithLang(string value) + public TextBlock WithLang(string value) { this.Lang = value; return this; } - public Container WithIsVisible(bool value) + public TextBlock WithIsVisible(bool value) { this.IsVisible = value; return this; } - public Container WithSeparator(bool value) + public TextBlock WithSeparator(bool value) { this.Separator = value; return this; } - public Container WithHeight(ElementHeight value) + public TextBlock WithHeight(ElementHeight value) { this.Height = value; return this; } - public Container WithHorizontalAlignment(HorizontalAlignment value) + public TextBlock WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public Container WithSpacing(Spacing value) + public TextBlock WithSpacing(Spacing value) { this.Spacing = value; return this; } - public Container WithTargetWidth(TargetWidth value) + public TextBlock WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public Container WithIsSortKey(bool value) + public TextBlock WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public Container WithSelectAction(Action value) - { - this.SelectAction = value; - return this; - } - - public Container WithStyle(ContainerStyle value) + public TextBlock WithText(string value) { - this.Style = value; + this.Text = value; return this; } - public Container WithShowBorder(bool value) + public TextBlock WithSize(TextSize value) { - this.ShowBorder = value; + this.Size = value; return this; } - public Container WithRoundedCorners(bool value) + public TextBlock WithWeight(TextWeight value) { - this.RoundedCorners = value; + this.Weight = value; return this; } - public Container WithLayouts(params IList value) + public TextBlock WithColor(TextColor value) { - this.Layouts = value; + this.Color = value; return this; } - public Container WithBleed(bool value) + public TextBlock WithIsSubtle(bool value) { - this.Bleed = value; + this.IsSubtle = value; return this; } - public Container WithMinHeight(string value) + public TextBlock WithFontType(FontType value) { - this.MinHeight = value; + this.FontType = value; return this; } - public Container WithBackgroundImage(IUnion value) + public TextBlock WithWrap(bool value) { - this.BackgroundImage = value; + this.Wrap = value; return this; } - public Container WithVerticalContentAlignment(VerticalAlignment value) + public TextBlock WithMaxLines(float value) { - this.VerticalContentAlignment = value; + this.MaxLines = value; return this; } - public Container WithRtl(bool value) + public TextBlock WithStyle(TextBlockStyle value) { - this.Rtl = value; + this.Style = value; return this; } - public Container WithMaxHeight(string value) + public TextBlock WithLabelFor(string value) { - this.MaxHeight = value; + this.LabelFor = value; return this; } - public Container WithGridArea(string value) + public TextBlock WithGridArea(string value) { this.GridArea = value; return this; } - public Container WithFallback(IUnion value) + public TextBlock WithFallback(IUnion value) { this.Fallback = value; return this; } - - public Container WithItems(params IList value) - { - this.Items = value; - return this; - } } /// -/// Displays a set of action, which can be placed anywhere in the card. +/// A set of facts, displayed as a table or a vertical list when horizontal space is constrained. /// -public class ActionSet : CardElement +public class FactSet : CardElement { /// - /// Deserializes a JSON string into an object of type ActionSet. + /// Deserializes a JSON string into an object of type FactSet. /// - public static ActionSet? Deserialize(string json) + public static FactSet? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **ActionSet**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **FactSet**. /// [JsonPropertyName("type")] - public string Type { get; } = "ActionSet"; + public string Type { get; } = "FactSet"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -4264,7 +6288,7 @@ public class ActionSet : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -4276,31 +6300,25 @@ public class ActionSet : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } - - /// - /// Controls how the element should be horizontally aligned. - /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -4312,7 +6330,13 @@ public class ActionSet : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; + + /// + /// The facts in the set. + /// + [JsonPropertyName("facts")] + public IList? Facts { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -4326,19 +6350,13 @@ public class ActionSet : CardElement [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } - /// - /// The actions in the set. - /// - [JsonPropertyName("actions")] - public IList? Actions { get; set; } - - public ActionSet(params IList actions) + public FactSet(params IList facts) { - this.Actions = actions; + this.Facts = facts; } /// - /// Serializes this ActionSet into a JSON string. + /// Serializes this FactSet into a JSON string. /// public string Serialize() { @@ -4352,103 +6370,180 @@ public string Serialize() ); } - public ActionSet WithId(string value) + public FactSet WithKey(string value) + { + this.Key = value; + return this; + } + + public FactSet WithId(string value) { this.Id = value; return this; } - public ActionSet WithRequires(HostCapabilities value) + public FactSet WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public ActionSet WithLang(string value) + public FactSet WithLang(string value) { this.Lang = value; return this; } - public ActionSet WithIsVisible(bool value) + public FactSet WithIsVisible(bool value) { this.IsVisible = value; return this; } - public ActionSet WithSeparator(bool value) + public FactSet WithSeparator(bool value) { this.Separator = value; return this; } - public ActionSet WithHeight(ElementHeight value) + public FactSet WithHeight(ElementHeight value) { this.Height = value; return this; } - public ActionSet WithHorizontalAlignment(HorizontalAlignment value) + public FactSet WithSpacing(Spacing value) { - this.HorizontalAlignment = value; + this.Spacing = value; return this; } - public ActionSet WithSpacing(Spacing value) + public FactSet WithTargetWidth(TargetWidth value) { - this.Spacing = value; + this.TargetWidth = value; return this; } - public ActionSet WithTargetWidth(TargetWidth value) + public FactSet WithIsSortKey(bool value) { - this.TargetWidth = value; + this.IsSortKey = value; return this; } - public ActionSet WithIsSortKey(bool value) + public FactSet WithFacts(params IList value) { - this.IsSortKey = value; + this.Facts = value; return this; } - public ActionSet WithGridArea(string value) + public FactSet WithGridArea(string value) { this.GridArea = value; return this; } - public ActionSet WithFallback(IUnion value) + public FactSet WithFallback(IUnion value) { this.Fallback = value; return this; } +} - public ActionSet WithActions(params IList value) +/// +/// A fact in a FactSet element. +/// +public class Fact : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type Fact. + /// + public static Fact? Deserialize(string json) { - this.Actions = value; + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The fact's title. + /// + [JsonPropertyName("title")] + public string? Title { get; set; } + + /// + /// The fact's value. + /// + [JsonPropertyName("value")] + public string? Value { get; set; } + + public Fact(string title, string value) + { + this.Title = title; + this.Value = value; + } + + /// + /// Serializes this Fact into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public Fact WithKey(string value) + { + this.Key = value; + return this; + } + + public Fact WithTitle(string value) + { + this.Title = value; + return this; + } + + public Fact WithValue(string value) + { + this.Value = value; return this; } } /// -/// Splits the available horizontal space into separate columns, so elements can be organized in a row. +/// A set of images, displayed side-by-side and wrapped across multiple rows as needed. /// -public class ColumnSet : CardElement +public class ImageSet : CardElement { /// - /// Deserializes a JSON string into an object of type ColumnSet. + /// Deserializes a JSON string into an object of type ImageSet. /// - public static ColumnSet? Deserialize(string json) + public static ImageSet? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **ColumnSet**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **ImageSet**. /// [JsonPropertyName("type")] - public string Type { get; } = "ColumnSet"; + public string Type { get; } = "ImageSet"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -4460,7 +6555,7 @@ public class ColumnSet : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -4472,19 +6567,19 @@ public class ColumnSet : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -4496,7 +6591,7 @@ public class ColumnSet : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -4507,44 +6602,20 @@ public class ColumnSet : CardElement /// /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// - [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// An Action that will be invoked when the element is tapped or clicked. Action.ShowCard is not supported. - /// - [JsonPropertyName("selectAction")] - public Action? SelectAction { get; set; } - - /// - /// The style of the container. Container styles control the colors of the background, border and text inside the container, in such a way that contrast requirements are always met. - /// - [JsonPropertyName("style")] - public ContainerStyle? Style { get; set; } - - /// - /// Controls if a border should be displayed around the container. - /// - [JsonPropertyName("showBorder")] - public bool? ShowBorder { get; set; } - - /// - /// Controls if the container should have rounded corners. - /// - [JsonPropertyName("roundedCorners")] - public bool? RoundedCorners { get; set; } + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; /// - /// Controls if the container should bleed into its parent. A bleeding container extends into its parent's padding. + /// The images in the set. /// - [JsonPropertyName("bleed")] - public bool? Bleed { get; set; } + [JsonPropertyName("images")] + public IList? Images { get; set; } /// - /// The minimum height, in pixels, of the container, in the `px` format. + /// The size to use to render all images in the set. /// - [JsonPropertyName("minHeight")] - public string? MinHeight { get; set; } + [JsonPropertyName("imageSize")] + public ImageSize? ImageSize { get; set; } = ImageSize.Medium; /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -4558,14 +6629,13 @@ public class ColumnSet : CardElement [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } - /// - /// The columns in the set. - /// - [JsonPropertyName("columns")] - public IList? Columns { get; set; } + public ImageSet(params IList images) + { + this.Images = images; + } /// - /// Serializes this ColumnSet into a JSON string. + /// Serializes this ImageSet into a JSON string. /// public string Serialize() { @@ -4579,139 +6649,121 @@ public string Serialize() ); } - public ColumnSet WithId(string value) + public ImageSet WithKey(string value) + { + this.Key = value; + return this; + } + + public ImageSet WithId(string value) { this.Id = value; return this; } - public ColumnSet WithRequires(HostCapabilities value) + public ImageSet WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public ColumnSet WithLang(string value) + public ImageSet WithLang(string value) { this.Lang = value; return this; } - public ColumnSet WithIsVisible(bool value) + public ImageSet WithIsVisible(bool value) { this.IsVisible = value; return this; } - public ColumnSet WithSeparator(bool value) + public ImageSet WithSeparator(bool value) { this.Separator = value; return this; } - public ColumnSet WithHeight(ElementHeight value) + public ImageSet WithHeight(ElementHeight value) { this.Height = value; return this; } - public ColumnSet WithHorizontalAlignment(HorizontalAlignment value) + public ImageSet WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public ColumnSet WithSpacing(Spacing value) + public ImageSet WithSpacing(Spacing value) { this.Spacing = value; return this; } - public ColumnSet WithTargetWidth(TargetWidth value) + public ImageSet WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public ColumnSet WithIsSortKey(bool value) + public ImageSet WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public ColumnSet WithSelectAction(Action value) - { - this.SelectAction = value; - return this; - } - - public ColumnSet WithStyle(ContainerStyle value) - { - this.Style = value; - return this; - } - - public ColumnSet WithShowBorder(bool value) - { - this.ShowBorder = value; - return this; - } - - public ColumnSet WithRoundedCorners(bool value) - { - this.RoundedCorners = value; - return this; - } - - public ColumnSet WithBleed(bool value) + public ImageSet WithImages(params IList value) { - this.Bleed = value; + this.Images = value; return this; } - public ColumnSet WithMinHeight(string value) + public ImageSet WithImageSize(ImageSize value) { - this.MinHeight = value; + this.ImageSize = value; return this; } - public ColumnSet WithGridArea(string value) + public ImageSet WithGridArea(string value) { this.GridArea = value; return this; } - public ColumnSet WithFallback(IUnion value) + public ImageSet WithFallback(IUnion value) { this.Fallback = value; return this; } - - public ColumnSet WithColumns(params IList value) - { - this.Columns = value; - return this; - } } /// -/// A media element, that makes it possible to embed videos inside a card. +/// A standalone image element. /// -public class Media : CardElement +public class Image : CardElement { /// - /// Deserializes a JSON string into an object of type Media. + /// Deserializes a JSON string into an object of type Image. /// - public static Media? Deserialize(string json) + public static Image? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Media**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Image**. /// [JsonPropertyName("type")] - public string Type { get; } = "Media"; + public string Type { get; } = "Image"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -4723,7 +6775,7 @@ public class Media : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -4735,25 +6787,25 @@ public class Media : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// - /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. + /// Controls how the element should be horizontally aligned. /// - [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -4765,31 +6817,91 @@ public class Media : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The sources for the media. For YouTube, Dailymotion and Vimeo, only one source can be specified. + /// The URL (or Base64-encoded Data URI) of the image. Acceptable formats are PNG, JPEG, GIF and SVG. /// - [JsonPropertyName("sources")] - public IList? Sources { get; set; } + [JsonPropertyName("url")] + public string? Url { get; set; } /// - /// The caption sources for the media. Caption sources are not used for YouTube, Dailymotion or Vimeo sources. + /// The alternate text for the image, used for accessibility purposes. /// - [JsonPropertyName("captionSources")] - public IList? CaptionSources { get; set; } + [JsonPropertyName("altText")] + public string? AltText { get; set; } /// - /// The URL of the poster image to display. + /// The background color of the image. /// - [JsonPropertyName("poster")] - public string? Poster { get; set; } + [JsonPropertyName("backgroundColor")] + public string? BackgroundColor { get; set; } /// - /// The alternate text for the media, used for accessibility purposes. + /// The style of the image. /// - [JsonPropertyName("altText")] - public string? AltText { get; set; } + [JsonPropertyName("style")] + public ImageStyle? Style { get; set; } = ImageStyle.Default; + + /// + /// The size of the image. + /// + [JsonPropertyName("size")] + public Size? Size { get; set; } = Size.Auto; + + /// + /// The width of the image. + /// + [JsonPropertyName("width")] + public string? Width { get; set; } = "auto"; + + /// + /// An Action that will be invoked when the image is tapped or clicked. Action.ShowCard is not supported. + /// + [JsonPropertyName("selectAction")] + public Action? SelectAction { get; set; } + + /// + /// Controls if the image can be expanded to full screen. + /// + [JsonPropertyName("allowExpand")] + public bool? AllowExpand { get; set; } = false; + + /// + /// Teams-specific metadata associated with the image. + /// + [JsonPropertyName("msteams")] + public TeamsImageProperties? Msteams { get; set; } + + /// + /// A set of theme-specific image URLs. + /// + [JsonPropertyName("themedUrls")] + public IList? ThemedUrls { get; set; } + + /// + /// Controls how the image should be fitted inside its bounding box. imageFit is only meaningful when both the width and height properties are set. When fitMode is set to contain, the default style is always used. + /// + [JsonPropertyName("fitMode")] + public ImageFitMode? FitMode { get; set; } = ImageFitMode.Fill; + + /// + /// Controls the horizontal position of the image within its bounding box. horizontalContentAlignment is only meaningful when both the width and height properties are set and fitMode is set to either cover or contain. + /// + [JsonPropertyName("horizontalContentAlignment")] + public HorizontalAlignment? HorizontalContentAlignment { get; set; } = HorizontalAlignment.Left; + + /// + /// Controls the vertical position of the image within its bounding box. verticalContentAlignment is only meaningful when both the width and height properties are set and fitMode is set to either cover or contain. + /// + [JsonPropertyName("verticalContentAlignment")] + public VerticalAlignment? VerticalContentAlignment { get; set; } = VerticalAlignment.Top; + + /// + /// The height of the image. + /// + [JsonPropertyName("height")] + public string? Height { get; set; } = "auto"; /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -4803,8 +6915,13 @@ public class Media : CardElement [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } + public Image(string url) + { + this.Url = url; + } + /// - /// Serializes this Media into a JSON string. + /// Serializes this Image into a JSON string. /// public string Serialize() { @@ -4818,183 +6935,190 @@ public string Serialize() ); } - public Media WithId(string value) + public Image WithKey(string value) + { + this.Key = value; + return this; + } + + public Image WithId(string value) { this.Id = value; return this; } - public Media WithRequires(HostCapabilities value) + public Image WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public Media WithLang(string value) + public Image WithLang(string value) { this.Lang = value; return this; } - public Media WithIsVisible(bool value) + public Image WithIsVisible(bool value) { this.IsVisible = value; return this; } - public Media WithSeparator(bool value) + public Image WithSeparator(bool value) { this.Separator = value; return this; } - public Media WithHeight(ElementHeight value) + public Image WithHorizontalAlignment(HorizontalAlignment value) { - this.Height = value; + this.HorizontalAlignment = value; return this; } - public Media WithSpacing(Spacing value) + public Image WithSpacing(Spacing value) { this.Spacing = value; return this; } - public Media WithTargetWidth(TargetWidth value) + public Image WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public Media WithIsSortKey(bool value) + public Image WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public Media WithSources(params IList value) + public Image WithUrl(string value) { - this.Sources = value; + this.Url = value; return this; } - public Media WithCaptionSources(params IList value) + public Image WithAltText(string value) { - this.CaptionSources = value; + this.AltText = value; + return this; + } + + public Image WithBackgroundColor(string value) + { + this.BackgroundColor = value; + return this; + } + + public Image WithStyle(ImageStyle value) + { + this.Style = value; + return this; + } + + public Image WithSize(Size value) + { + this.Size = value; + return this; + } + + public Image WithWidth(string value) + { + this.Width = value; + return this; + } + + public Image WithSelectAction(Action value) + { + this.SelectAction = value; + return this; + } + + public Image WithAllowExpand(bool value) + { + this.AllowExpand = value; return this; } - public Media WithPoster(string value) + public Image WithMsteams(TeamsImageProperties value) { - this.Poster = value; + this.Msteams = value; return this; } - public Media WithAltText(string value) + public Image WithThemedUrls(params IList value) { - this.AltText = value; + this.ThemedUrls = value; return this; } - public Media WithGridArea(string value) + public Image WithFitMode(ImageFitMode value) { - this.GridArea = value; + this.FitMode = value; return this; } - public Media WithFallback(IUnion value) + public Image WithHorizontalContentAlignment(HorizontalAlignment value) { - this.Fallback = value; + this.HorizontalContentAlignment = value; return this; } -} -/// -/// Defines the source URL of a media stream. YouTube, Dailymotion, Vimeo and Microsoft Stream URLs are supported. -/// -public class MediaSource : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type MediaSource. - /// - public static MediaSource? Deserialize(string json) + public Image WithVerticalContentAlignment(VerticalAlignment value) { - return JsonSerializer.Deserialize(json); + this.VerticalContentAlignment = value; + return this; } - /// - /// The MIME type of the source. - /// - [JsonPropertyName("mimeType")] - public string? MimeType { get; set; } - - /// - /// The URL of the source. - /// - [JsonPropertyName("url")] - public string? Url { get; set; } - - /// - /// Serializes this MediaSource into a JSON string. - /// - public string Serialize() + public Image WithHeight(string value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.Height = value; + return this; } - public MediaSource WithMimeType(string value) + public Image WithGridArea(string value) { - this.MimeType = value; + this.GridArea = value; return this; } - public MediaSource WithUrl(string value) + public Image WithFallback(IUnion value) { - this.Url = value; + this.Fallback = value; return this; } } /// -/// Defines a source URL for a video captions. +/// Represents a set of Teams-specific properties on an image. /// -public class CaptionSource : SerializableObject +public class TeamsImageProperties : SerializableObject { /// - /// Deserializes a JSON string into an object of type CaptionSource. + /// Deserializes a JSON string into an object of type TeamsImageProperties. /// - public static CaptionSource? Deserialize(string json) + public static TeamsImageProperties? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The MIME type of the source. - /// - [JsonPropertyName("mimeType")] - public string? MimeType { get; set; } - - /// - /// The URL of the source. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("url")] - public string? Url { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The label of this caption source. + /// Controls if the image is expandable in Teams. This property is equivalent to the Image.allowExpand property. /// - [JsonPropertyName("label")] - public string? Label { get; set; } + [JsonPropertyName("allowExpand")] + public bool? AllowExpand { get; set; } /// - /// Serializes this CaptionSource into a JSON string. + /// Serializes this TeamsImageProperties into a JSON string. /// public string Serialize() { @@ -5008,43 +7132,43 @@ public string Serialize() ); } - public CaptionSource WithMimeType(string value) - { - this.MimeType = value; - return this; - } - - public CaptionSource WithUrl(string value) + public TeamsImageProperties WithKey(string value) { - this.Url = value; + this.Key = value; return this; } - public CaptionSource WithLabel(string value) + public TeamsImageProperties WithAllowExpand(bool value) { - this.Label = value; + this.AllowExpand = value; return this; } } /// -/// A rich text block that displays formatted text. +/// An input to allow the user to enter text. /// -public class RichTextBlock : CardElement +public class TextInput : CardElement { /// - /// Deserializes a JSON string into an object of type RichTextBlock. + /// Deserializes a JSON string into an object of type TextInput. /// - public static RichTextBlock? Deserialize(string json) + public static TextInput? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **RichTextBlock**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Input.Text**. /// [JsonPropertyName("type")] - public string Type { get; } = "RichTextBlock"; + public string Type { get; } = "Input.Text"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -5056,7 +7180,7 @@ public class RichTextBlock : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -5068,31 +7192,25 @@ public class RichTextBlock : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } - - /// - /// Controls how the element should be horizontally aligned. - /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -5104,7 +7222,75 @@ public class RichTextBlock : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; + + /// + /// The label of the input. + /// + /// A label should **always** be provided to ensure the best user experience especially for users of assistive technology. + /// + [JsonPropertyName("label")] + public string? Label { get; set; } + + /// + /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. + /// + [JsonPropertyName("isRequired")] + public bool? IsRequired { get; set; } = false; + + /// + /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. + /// + [JsonPropertyName("errorMessage")] + public string? ErrorMessage { get; set; } + + /// + /// An Action.ResetInputs action that will be executed when the value of the input changes. + /// + [JsonPropertyName("valueChangedAction")] + public Action? ValueChangedAction { get; set; } + + /// + /// The default value of the input. + /// + [JsonPropertyName("value")] + public string? Value { get; set; } + + /// + /// The maximum length of the text in the input. + /// + [JsonPropertyName("maxLength")] + public float? MaxLength { get; set; } + + /// + /// Controls if the input should allow multiple lines of text. + /// + [JsonPropertyName("isMultiline")] + public bool? IsMultiline { get; set; } = false; + + /// + /// The text to display as a placeholder when the user hasn't entered a value. + /// + [JsonPropertyName("placeholder")] + public string? Placeholder { get; set; } + + /// + /// The style of the input. + /// + [JsonPropertyName("style")] + public InputTextStyle? Style { get; set; } = InputTextStyle.Text; + + /// + /// The action that should be displayed as a button alongside the input. Action.ShowCard is not supported. + /// + [JsonPropertyName("inlineAction")] + public Action? InlineAction { get; set; } + + /// + /// The regular expression to validate the input. + /// + [JsonPropertyName("regex")] + public string? Regex { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -5119,123 +7305,183 @@ public class RichTextBlock : CardElement public IUnion? Fallback { get; set; } /// - /// The inlines making up the rich text block. - /// - [JsonPropertyName("inlines")] - public IUnion, IList>? Inlines { get; set; } - - /// - /// Serializes this RichTextBlock into a JSON string. + /// Serializes this TextInput into a JSON string. /// public string Serialize() { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public TextInput WithKey(string value) + { + this.Key = value; + return this; + } + + public TextInput WithId(string value) + { + this.Id = value; + return this; + } + + public TextInput WithRequires(HostCapabilities value) + { + this.Requires = value; + return this; + } + + public TextInput WithLang(string value) + { + this.Lang = value; + return this; + } + + public TextInput WithIsVisible(bool value) + { + this.IsVisible = value; + return this; + } + + public TextInput WithSeparator(bool value) + { + this.Separator = value; + return this; + } + + public TextInput WithHeight(ElementHeight value) + { + this.Height = value; + return this; + } + + public TextInput WithSpacing(Spacing value) + { + this.Spacing = value; + return this; + } + + public TextInput WithTargetWidth(TargetWidth value) + { + this.TargetWidth = value; + return this; + } + + public TextInput WithIsSortKey(bool value) + { + this.IsSortKey = value; + return this; } - public RichTextBlock WithId(string value) + public TextInput WithLabel(string value) { - this.Id = value; + this.Label = value; return this; } - public RichTextBlock WithRequires(HostCapabilities value) + public TextInput WithIsRequired(bool value) { - this.Requires = value; + this.IsRequired = value; return this; } - public RichTextBlock WithLang(string value) + public TextInput WithErrorMessage(string value) { - this.Lang = value; + this.ErrorMessage = value; return this; } - public RichTextBlock WithIsVisible(bool value) + public TextInput WithValueChangedAction(Action value) { - this.IsVisible = value; + this.ValueChangedAction = value; return this; } - public RichTextBlock WithSeparator(bool value) + public TextInput WithValue(string value) { - this.Separator = value; + this.Value = value; return this; } - public RichTextBlock WithHeight(ElementHeight value) + public TextInput WithMaxLength(float value) { - this.Height = value; + this.MaxLength = value; return this; } - public RichTextBlock WithHorizontalAlignment(HorizontalAlignment value) + public TextInput WithIsMultiline(bool value) { - this.HorizontalAlignment = value; + this.IsMultiline = value; return this; } - public RichTextBlock WithSpacing(Spacing value) + public TextInput WithPlaceholder(string value) { - this.Spacing = value; + this.Placeholder = value; return this; } - public RichTextBlock WithTargetWidth(TargetWidth value) + public TextInput WithStyle(InputTextStyle value) { - this.TargetWidth = value; + this.Style = value; return this; } - public RichTextBlock WithIsSortKey(bool value) + public TextInput WithInlineAction(Action value) { - this.IsSortKey = value; + this.InlineAction = value; return this; } - public RichTextBlock WithGridArea(string value) + public TextInput WithRegex(string value) { - this.GridArea = value; + this.Regex = value; return this; } - public RichTextBlock WithFallback(IUnion value) + public TextInput WithGridArea(string value) { - this.Fallback = value; + this.GridArea = value; return this; } - public RichTextBlock WithInlines(IUnion, IList> value) + public TextInput WithFallback(IUnion value) { - this.Inlines = value; + this.Fallback = value; return this; } } /// -/// Use tables to display data in a tabular way, with rows, columns and cells. +/// An input to allow the user to select a date. /// -public class Table : CardElement +public class DateInput : CardElement { /// - /// Deserializes a JSON string into an object of type Table. + /// Deserializes a JSON string into an object of type DateInput. /// - public static Table? Deserialize(string json) + public static DateInput? Deserialize(string json) { - return JsonSerializer.Deserialize
(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Table**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Input.Date**. /// [JsonPropertyName("type")] - public string Type { get; } = "Table"; + public string Type { get; } = "Input.Date"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -5247,7 +7493,7 @@ public class Table : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -5259,31 +7505,25 @@ public class Table : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } - - /// - /// Controls how the element should be horizontally aligned. - /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -5295,61 +7535,57 @@ public class Table : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The style of the container. Container styles control the colors of the background, border and text inside the container, in such a way that contrast requirements are always met. - /// - [JsonPropertyName("style")] - public ContainerStyle? Style { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// Controls if a border should be displayed around the container. + /// The label of the input. + /// + /// A label should **always** be provided to ensure the best user experience especially for users of assistive technology. /// - [JsonPropertyName("showBorder")] - public bool? ShowBorder { get; set; } + [JsonPropertyName("label")] + public string? Label { get; set; } /// - /// Controls if the container should have rounded corners. + /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. /// - [JsonPropertyName("roundedCorners")] - public bool? RoundedCorners { get; set; } + [JsonPropertyName("isRequired")] + public bool? IsRequired { get; set; } = false; /// - /// The columns in the table. + /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. /// - [JsonPropertyName("columns")] - public IList? Columns { get; set; } + [JsonPropertyName("errorMessage")] + public string? ErrorMessage { get; set; } /// - /// Controls whether the first row of the table should be treated as a header. + /// An Action.ResetInputs action that will be executed when the value of the input changes. /// - [JsonPropertyName("firstRowAsHeaders")] - public bool? FirstRowAsHeaders { get; set; } + [JsonPropertyName("valueChangedAction")] + public Action? ValueChangedAction { get; set; } /// - /// Controls if grid lines should be displayed. + /// The default value of the input, in the `YYYY-MM-DD` format. /// - [JsonPropertyName("showGridLines")] - public bool? ShowGridLines { get; set; } + [JsonPropertyName("value")] + public string? Value { get; set; } /// - /// The style of the grid lines between cells. + /// The text to display as a placeholder when the user has not selected a date. /// - [JsonPropertyName("gridStyle")] - public ContainerStyle? GridStyle { get; set; } + [JsonPropertyName("placeholder")] + public string? Placeholder { get; set; } /// - /// Controls how the content of every cell in the table should be horizontally aligned by default. + /// The minimum date that can be selected. /// - [JsonPropertyName("horizontalCellContentAlignment")] - public HorizontalAlignment? HorizontalCellContentAlignment { get; set; } + [JsonPropertyName("min")] + public string? Min { get; set; } /// - /// Controls how the content of every cell in the table should be vertically aligned by default. + /// The maximum date that can be selected. /// - [JsonPropertyName("verticalCellContentAlignment")] - public VerticalAlignment? VerticalCellContentAlignment { get; set; } + [JsonPropertyName("max")] + public string? Max { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -5364,13 +7600,7 @@ public class Table : CardElement public IUnion? Fallback { get; set; } /// - /// The rows of the table. - /// - [JsonPropertyName("rows")] - public IList? Rows { get; set; } - - /// - /// Serializes this Table into a JSON string. + /// Serializes this DateInput into a JSON string. /// public string Serialize() { @@ -5384,222 +7614,151 @@ public string Serialize() ); } - public Table WithId(string value) + public DateInput WithKey(string value) + { + this.Key = value; + return this; + } + + public DateInput WithId(string value) { this.Id = value; return this; } - public Table WithRequires(HostCapabilities value) + public DateInput WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public Table WithLang(string value) + public DateInput WithLang(string value) { this.Lang = value; return this; } - public Table WithIsVisible(bool value) + public DateInput WithIsVisible(bool value) { this.IsVisible = value; return this; } - public Table WithSeparator(bool value) + public DateInput WithSeparator(bool value) { this.Separator = value; return this; } - public Table WithHeight(ElementHeight value) + public DateInput WithHeight(ElementHeight value) { this.Height = value; return this; } - public Table WithHorizontalAlignment(HorizontalAlignment value) - { - this.HorizontalAlignment = value; - return this; - } - - public Table WithSpacing(Spacing value) + public DateInput WithSpacing(Spacing value) { this.Spacing = value; return this; } - public Table WithTargetWidth(TargetWidth value) + public DateInput WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public Table WithIsSortKey(bool value) + public DateInput WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public Table WithStyle(ContainerStyle value) - { - this.Style = value; - return this; - } - - public Table WithShowBorder(bool value) - { - this.ShowBorder = value; - return this; - } - - public Table WithRoundedCorners(bool value) - { - this.RoundedCorners = value; - return this; - } - - public Table WithColumns(params IList value) - { - this.Columns = value; - return this; - } - - public Table WithFirstRowAsHeaders(bool value) - { - this.FirstRowAsHeaders = value; - return this; - } - - public Table WithShowGridLines(bool value) - { - this.ShowGridLines = value; - return this; - } - - public Table WithGridStyle(ContainerStyle value) - { - this.GridStyle = value; - return this; - } - - public Table WithHorizontalCellContentAlignment(HorizontalAlignment value) - { - this.HorizontalCellContentAlignment = value; - return this; - } - - public Table WithVerticalCellContentAlignment(VerticalAlignment value) + public DateInput WithLabel(string value) { - this.VerticalCellContentAlignment = value; + this.Label = value; return this; } - public Table WithGridArea(string value) + public DateInput WithIsRequired(bool value) { - this.GridArea = value; + this.IsRequired = value; return this; } - public Table WithFallback(IUnion value) + public DateInput WithErrorMessage(string value) { - this.Fallback = value; + this.ErrorMessage = value; return this; } - public Table WithRows(params IList value) + public DateInput WithValueChangedAction(Action value) { - this.Rows = value; + this.ValueChangedAction = value; return this; } -} - -/// -/// Defines a column in a Table element. -/// -public class ColumnDefinition : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type ColumnDefinition. - /// - public static ColumnDefinition? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } - - /// - /// Controls how the content of every cell in the table should be horizontally aligned by default. This property overrides the horizontalCellContentAlignment property of the table. - /// - [JsonPropertyName("horizontalCellContentAlignment")] - public HorizontalAlignment? HorizontalCellContentAlignment { get; set; } - /// - /// Controls how the content of every cell in the column should be vertically aligned by default. This property overrides the verticalCellContentAlignment property of the table. - /// - [JsonPropertyName("verticalCellContentAlignment")] - public VerticalAlignment? VerticalCellContentAlignment { get; set; } + public DateInput WithValue(string value) + { + this.Value = value; + return this; + } - /// - /// The width of the column in the table, expressed as either a percentage of the available width or in pixels, using the `px` format. - /// - [JsonPropertyName("width")] - public IUnion? Width { get; set; } + public DateInput WithPlaceholder(string value) + { + this.Placeholder = value; + return this; + } - /// - /// Serializes this ColumnDefinition into a JSON string. - /// - public string Serialize() + public DateInput WithMin(string value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.Min = value; + return this; } - public ColumnDefinition WithHorizontalCellContentAlignment(HorizontalAlignment value) + public DateInput WithMax(string value) { - this.HorizontalCellContentAlignment = value; + this.Max = value; return this; } - public ColumnDefinition WithVerticalCellContentAlignment(VerticalAlignment value) + public DateInput WithGridArea(string value) { - this.VerticalCellContentAlignment = value; + this.GridArea = value; return this; } - public ColumnDefinition WithWidth(IUnion value) + public DateInput WithFallback(IUnion value) { - this.Width = value; + this.Fallback = value; return this; } } /// -/// A block of text, optionally formatted using Markdown. +/// An input to allow the user to select a time. /// -public class TextBlock : CardElement +public class TimeInput : CardElement { /// - /// Deserializes a JSON string into an object of type TextBlock. + /// Deserializes a JSON string into an object of type TimeInput. /// - public static TextBlock? Deserialize(string json) + public static TimeInput? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **TextBlock**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Input.Time**. /// [JsonPropertyName("type")] - public string Type { get; } = "TextBlock"; + public string Type { get; } = "Input.Time"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -5611,7 +7770,7 @@ public class TextBlock : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -5623,31 +7782,25 @@ public class TextBlock : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } - - /// - /// Controls how the element should be horizontally aligned. - /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -5659,61 +7812,57 @@ public class TextBlock : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The text to display. A subset of markdown is supported. - /// - [JsonPropertyName("text")] - public string? Text { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The size of the text. + /// The label of the input. + /// + /// A label should **always** be provided to ensure the best user experience especially for users of assistive technology. /// - [JsonPropertyName("size")] - public TextSize? Size { get; set; } + [JsonPropertyName("label")] + public string? Label { get; set; } /// - /// The weight of the text. + /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. /// - [JsonPropertyName("weight")] - public TextWeight? Weight { get; set; } + [JsonPropertyName("isRequired")] + public bool? IsRequired { get; set; } = false; /// - /// The color of the text. + /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. /// - [JsonPropertyName("color")] - public TextColor? Color { get; set; } + [JsonPropertyName("errorMessage")] + public string? ErrorMessage { get; set; } /// - /// Controls whether the text should be renderer using a subtler variant of the select color. + /// An Action.ResetInputs action that will be executed when the value of the input changes. /// - [JsonPropertyName("isSubtle")] - public bool? IsSubtle { get; set; } + [JsonPropertyName("valueChangedAction")] + public Action? ValueChangedAction { get; set; } /// - /// The type of font to use for rendering. + /// The default value of the input, in the `HH:MM` format. /// - [JsonPropertyName("fontType")] - public FontType? FontType { get; set; } + [JsonPropertyName("value")] + public string? Value { get; set; } /// - /// Controls if the text should wrap. + /// The text to display as a placeholder when the user hasn't entered a value. /// - [JsonPropertyName("wrap")] - public bool? Wrap { get; set; } + [JsonPropertyName("placeholder")] + public string? Placeholder { get; set; } /// - /// The maximum number of lines to display. + /// The minimum time that can be selected, in the `HH:MM` format. /// - [JsonPropertyName("maxLines")] - public float? MaxLines { get; set; } + [JsonPropertyName("min")] + public string? Min { get; set; } /// - /// The style of the text. + /// The maximum time that can be selected, in the `HH:MM` format. /// - [JsonPropertyName("style")] - public StyleEnum? Style { get; set; } + [JsonPropertyName("max")] + public string? Max { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -5727,13 +7876,8 @@ public class TextBlock : CardElement [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } - public TextBlock(string text) - { - this.Text = text; - } - /// - /// Serializes this TextBlock into a JSON string. + /// Serializes this TimeInput into a JSON string. /// public string Serialize() { @@ -5747,127 +7891,121 @@ public string Serialize() ); } - public TextBlock WithId(string value) + public TimeInput WithKey(string value) + { + this.Key = value; + return this; + } + + public TimeInput WithId(string value) { this.Id = value; return this; } - public TextBlock WithRequires(HostCapabilities value) + public TimeInput WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public TextBlock WithLang(string value) + public TimeInput WithLang(string value) { this.Lang = value; return this; } - public TextBlock WithIsVisible(bool value) + public TimeInput WithIsVisible(bool value) { this.IsVisible = value; return this; } - public TextBlock WithSeparator(bool value) + public TimeInput WithSeparator(bool value) { this.Separator = value; return this; } - public TextBlock WithHeight(ElementHeight value) + public TimeInput WithHeight(ElementHeight value) { this.Height = value; return this; } - public TextBlock WithHorizontalAlignment(HorizontalAlignment value) - { - this.HorizontalAlignment = value; - return this; - } - - public TextBlock WithSpacing(Spacing value) + public TimeInput WithSpacing(Spacing value) { this.Spacing = value; return this; } - public TextBlock WithTargetWidth(TargetWidth value) + public TimeInput WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public TextBlock WithIsSortKey(bool value) + public TimeInput WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public TextBlock WithText(string value) - { - this.Text = value; - return this; - } - - public TextBlock WithSize(TextSize value) + public TimeInput WithLabel(string value) { - this.Size = value; + this.Label = value; return this; } - public TextBlock WithWeight(TextWeight value) + public TimeInput WithIsRequired(bool value) { - this.Weight = value; + this.IsRequired = value; return this; } - public TextBlock WithColor(TextColor value) + public TimeInput WithErrorMessage(string value) { - this.Color = value; + this.ErrorMessage = value; return this; } - public TextBlock WithIsSubtle(bool value) + public TimeInput WithValueChangedAction(Action value) { - this.IsSubtle = value; + this.ValueChangedAction = value; return this; } - public TextBlock WithFontType(FontType value) + public TimeInput WithValue(string value) { - this.FontType = value; + this.Value = value; return this; } - public TextBlock WithWrap(bool value) + public TimeInput WithPlaceholder(string value) { - this.Wrap = value; + this.Placeholder = value; return this; } - public TextBlock WithMaxLines(float value) + public TimeInput WithMin(string value) { - this.MaxLines = value; + this.Min = value; return this; } - public TextBlock WithStyle(StyleEnum value) + public TimeInput WithMax(string value) { - this.Style = value; + this.Max = value; return this; } - public TextBlock WithGridArea(string value) + public TimeInput WithGridArea(string value) { this.GridArea = value; return this; } - public TextBlock WithFallback(IUnion value) + public TimeInput WithFallback(IUnion value) { this.Fallback = value; return this; @@ -5875,23 +8013,29 @@ public TextBlock WithFallback(IUnion value) } /// -/// A set of facts, displayed as a table or a vertical list when horizontal space is constrained. +/// An input to allow the user to enter a number. /// -public class FactSet : CardElement +public class NumberInput : CardElement { /// - /// Deserializes a JSON string into an object of type FactSet. + /// Deserializes a JSON string into an object of type NumberInput. /// - public static FactSet? Deserialize(string json) + public static NumberInput? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **FactSet**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Input.Number**. /// [JsonPropertyName("type")] - public string Type { get; } = "FactSet"; + public string Type { get; } = "Input.Number"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -5903,7 +8047,7 @@ public class FactSet : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -5915,43 +8059,87 @@ public class FactSet : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; + + /// + /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). + /// + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } + + /// + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. + /// + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; + + /// + /// The label of the input. + /// + /// A label should **always** be provided to ensure the best user experience especially for users of assistive technology. + /// + [JsonPropertyName("label")] + public string? Label { get; set; } + + /// + /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. + /// + [JsonPropertyName("isRequired")] + public bool? IsRequired { get; set; } = false; + + /// + /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. + /// + [JsonPropertyName("errorMessage")] + public string? ErrorMessage { get; set; } + + /// + /// An Action.ResetInputs action that will be executed when the value of the input changes. + /// + [JsonPropertyName("valueChangedAction")] + public Action? ValueChangedAction { get; set; } + + /// + /// The default value of the input. + /// + [JsonPropertyName("value")] + public float? Value { get; set; } /// - /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). + /// The text to display as a placeholder when the user hasn't entered a value. /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } + [JsonPropertyName("placeholder")] + public string? Placeholder { get; set; } /// - /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. + /// The minimum value that can be entered. /// - [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + [JsonPropertyName("min")] + public float? Min { get; set; } /// - /// The facts in the set. + /// The maximum value that can be entered. /// - [JsonPropertyName("facts")] - public IList? Facts { get; set; } + [JsonPropertyName("max")] + public float? Max { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -5965,13 +8153,8 @@ public class FactSet : CardElement [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } - public FactSet(params IList facts) - { - this.Facts = facts; - } - /// - /// Serializes this FactSet into a JSON string. + /// Serializes this NumberInput into a JSON string. /// public string Serialize() { @@ -5985,156 +8168,151 @@ public string Serialize() ); } - public FactSet WithId(string value) + public NumberInput WithKey(string value) + { + this.Key = value; + return this; + } + + public NumberInput WithId(string value) { this.Id = value; return this; } - public FactSet WithRequires(HostCapabilities value) + public NumberInput WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public FactSet WithLang(string value) + public NumberInput WithLang(string value) { this.Lang = value; return this; } - public FactSet WithIsVisible(bool value) + public NumberInput WithIsVisible(bool value) { this.IsVisible = value; return this; } - public FactSet WithSeparator(bool value) + public NumberInput WithSeparator(bool value) { this.Separator = value; return this; } - public FactSet WithHeight(ElementHeight value) + public NumberInput WithHeight(ElementHeight value) { this.Height = value; return this; } - public FactSet WithSpacing(Spacing value) + public NumberInput WithSpacing(Spacing value) { this.Spacing = value; return this; } - public FactSet WithTargetWidth(TargetWidth value) + public NumberInput WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public FactSet WithIsSortKey(bool value) + public NumberInput WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public FactSet WithFacts(params IList value) + public NumberInput WithLabel(string value) { - this.Facts = value; + this.Label = value; return this; } - public FactSet WithGridArea(string value) + public NumberInput WithIsRequired(bool value) { - this.GridArea = value; + this.IsRequired = value; return this; } - public FactSet WithFallback(IUnion value) + public NumberInput WithErrorMessage(string value) { - this.Fallback = value; + this.ErrorMessage = value; return this; } -} -/// -/// A fact in a FactSet element. -/// -public class Fact : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type Fact. - /// - public static Fact? Deserialize(string json) + public NumberInput WithValueChangedAction(Action value) { - return JsonSerializer.Deserialize(json); + this.ValueChangedAction = value; + return this; } - /// - /// The fact's title. - /// - [JsonPropertyName("title")] - public string? Title { get; set; } + public NumberInput WithValue(float value) + { + this.Value = value; + return this; + } - /// - /// The fact's value. - /// - [JsonPropertyName("value")] - public string? Value { get; set; } + public NumberInput WithPlaceholder(string value) + { + this.Placeholder = value; + return this; + } - public Fact(string title, string value) + public NumberInput WithMin(float value) { - this.Title = title; - this.Value = value; + this.Min = value; + return this; } - /// - /// Serializes this Fact into a JSON string. - /// - public string Serialize() + public NumberInput WithMax(float value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.Max = value; + return this; } - public Fact WithTitle(string value) + public NumberInput WithGridArea(string value) { - this.Title = value; + this.GridArea = value; return this; } - public Fact WithValue(string value) + public NumberInput WithFallback(IUnion value) { - this.Value = value; + this.Fallback = value; return this; } } /// -/// A set of images, displayed side-by-side and wrapped across multiple rows as needed. +/// An input to allow the user to select between on/off states. /// -public class ImageSet : CardElement +public class ToggleInput : CardElement { /// - /// Deserializes a JSON string into an object of type ImageSet. + /// Deserializes a JSON string into an object of type ToggleInput. /// - public static ImageSet? Deserialize(string json) + public static ToggleInput? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **ImageSet**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Input.Toggle**. /// [JsonPropertyName("type")] - public string Type { get; } = "ImageSet"; + public string Type { get; } = "Input.Toggle"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -6146,7 +8324,7 @@ public class ImageSet : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -6158,31 +8336,25 @@ public class ImageSet : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } - - /// - /// Controls how the element should be horizontally aligned. - /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -6194,19 +8366,69 @@ public class ImageSet : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The images in the set. + /// The label of the input. + /// + /// A label should **always** be provided to ensure the best user experience especially for users of assistive technology. /// - [JsonPropertyName("images")] - public IList? Images { get; set; } + [JsonPropertyName("label")] + public string? Label { get; set; } /// - /// The size to use to render all images in the set. + /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. /// - [JsonPropertyName("imageSize")] - public ImageSize? ImageSize { get; set; } + [JsonPropertyName("isRequired")] + public bool? IsRequired { get; set; } = false; + + /// + /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. + /// + [JsonPropertyName("errorMessage")] + public string? ErrorMessage { get; set; } + + /// + /// An Action.ResetInputs action that will be executed when the value of the input changes. + /// + [JsonPropertyName("valueChangedAction")] + public Action? ValueChangedAction { get; set; } + + /// + /// The default value of the input. + /// + [JsonPropertyName("value")] + public string? Value { get; set; } = "false"; + + /// + /// The title (caption) to display next to the toggle. + /// + [JsonPropertyName("title")] + public string? Title { get; set; } + + /// + /// The value to send to the Bot when the toggle is on. + /// + [JsonPropertyName("valueOn")] + public string? ValueOn { get; set; } = "true"; + + /// + /// The value to send to the Bot when the toggle is off. + /// + [JsonPropertyName("valueOff")] + public string? ValueOff { get; set; } = "false"; + + /// + /// Controls if the title should wrap. + /// + [JsonPropertyName("wrap")] + public bool? Wrap { get; set; } = true; + + /// + /// Controls whether the title is visually displayed. When set to false, the title is hidden from view but remains accessible to screen readers for accessibility purposes. + /// + [JsonPropertyName("showTitle")] + public bool? ShowTitle { get; set; } = true; /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -6220,13 +8442,13 @@ public class ImageSet : CardElement [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } - public ImageSet(params IList images) + public ToggleInput(string title) { - this.Images = images; + this.Title = title; } /// - /// Serializes this ImageSet into a JSON string. + /// Serializes this ToggleInput into a JSON string. /// public string Serialize() { @@ -6240,85 +8462,133 @@ public string Serialize() ); } - public ImageSet WithId(string value) + public ToggleInput WithKey(string value) + { + this.Key = value; + return this; + } + + public ToggleInput WithId(string value) { this.Id = value; return this; } - public ImageSet WithRequires(HostCapabilities value) + public ToggleInput WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public ImageSet WithLang(string value) + public ToggleInput WithLang(string value) { this.Lang = value; return this; } - public ImageSet WithIsVisible(bool value) + public ToggleInput WithIsVisible(bool value) { this.IsVisible = value; return this; } - public ImageSet WithSeparator(bool value) + public ToggleInput WithSeparator(bool value) + { + this.Separator = value; + return this; + } + + public ToggleInput WithHeight(ElementHeight value) + { + this.Height = value; + return this; + } + + public ToggleInput WithSpacing(Spacing value) + { + this.Spacing = value; + return this; + } + + public ToggleInput WithTargetWidth(TargetWidth value) + { + this.TargetWidth = value; + return this; + } + + public ToggleInput WithIsSortKey(bool value) + { + this.IsSortKey = value; + return this; + } + + public ToggleInput WithLabel(string value) + { + this.Label = value; + return this; + } + + public ToggleInput WithIsRequired(bool value) + { + this.IsRequired = value; + return this; + } + + public ToggleInput WithErrorMessage(string value) { - this.Separator = value; + this.ErrorMessage = value; return this; } - public ImageSet WithHeight(ElementHeight value) + public ToggleInput WithValueChangedAction(Action value) { - this.Height = value; + this.ValueChangedAction = value; return this; } - public ImageSet WithHorizontalAlignment(HorizontalAlignment value) + public ToggleInput WithValue(string value) { - this.HorizontalAlignment = value; + this.Value = value; return this; } - public ImageSet WithSpacing(Spacing value) + public ToggleInput WithTitle(string value) { - this.Spacing = value; + this.Title = value; return this; } - public ImageSet WithTargetWidth(TargetWidth value) + public ToggleInput WithValueOn(string value) { - this.TargetWidth = value; + this.ValueOn = value; return this; } - public ImageSet WithIsSortKey(bool value) + public ToggleInput WithValueOff(string value) { - this.IsSortKey = value; + this.ValueOff = value; return this; } - public ImageSet WithImages(params IList value) + public ToggleInput WithWrap(bool value) { - this.Images = value; + this.Wrap = value; return this; } - public ImageSet WithImageSize(ImageSize value) + public ToggleInput WithShowTitle(bool value) { - this.ImageSize = value; + this.ShowTitle = value; return this; } - public ImageSet WithGridArea(string value) + public ToggleInput WithGridArea(string value) { this.GridArea = value; return this; } - public ImageSet WithFallback(IUnion value) + public ToggleInput WithFallback(IUnion value) { this.Fallback = value; return this; @@ -6326,23 +8596,29 @@ public ImageSet WithFallback(IUnion value) } /// -/// A standalone image element. +/// An input to allow the user to select one or more values. /// -public class Image : CardElement +public class ChoiceSetInput : CardElement { /// - /// Deserializes a JSON string into an object of type Image. + /// Deserializes a JSON string into an object of type ChoiceSetInput. /// - public static Image? Deserialize(string json) + public static ChoiceSetInput? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Image**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Input.ChoiceSet**. /// [JsonPropertyName("type")] - public string Type { get; } = "Image"; + public string Type { get; } = "Input.ChoiceSet"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -6354,7 +8630,7 @@ public class Image : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -6366,25 +8642,25 @@ public class Image : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// - /// Controls how the element should be horizontally aligned. + /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } + [JsonPropertyName("height")] + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -6396,64 +8672,87 @@ public class Image : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The URL (or Base64-encoded Data URI) of the image. Acceptable formats are PNG, JPEG, GIF and SVG. + /// The label of the input. + /// + /// A label should **always** be provided to ensure the best user experience especially for users of assistive technology. /// - [JsonPropertyName("url")] - public string? Url { get; set; } + [JsonPropertyName("label")] + public string? Label { get; set; } /// - /// The alternate text for the image, used for accessibility purposes. + /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. /// - [JsonPropertyName("altText")] - public string? AltText { get; set; } + [JsonPropertyName("isRequired")] + public bool? IsRequired { get; set; } = false; /// - /// The background color of the image. + /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. /// - [JsonPropertyName("backgroundColor")] - public string? BackgroundColor { get; set; } + [JsonPropertyName("errorMessage")] + public string? ErrorMessage { get; set; } /// - /// The style of the image. + /// An Action.ResetInputs action that will be executed when the value of the input changes. /// - [JsonPropertyName("style")] - public ImageStyle? Style { get; set; } + [JsonPropertyName("valueChangedAction")] + public Action? ValueChangedAction { get; set; } /// - /// The size of the image. + /// The default value of the input. /// - [JsonPropertyName("size")] - public Size? Size { get; set; } + [JsonPropertyName("value")] + public string? Value { get; set; } /// - /// The width of the image. + /// The choices associated with the input. /// - [JsonPropertyName("width")] - public string? Width { get; set; } + [JsonPropertyName("choices")] + public IList? Choices { get; set; } /// - /// An Action that will be invoked when the image is tapped or clicked. Action.ShowCard is not supported. + /// A Data.Query object that defines the dataset from which to dynamically fetch the choices for the input. /// - [JsonPropertyName("selectAction")] - public Action? SelectAction { get; set; } + [JsonPropertyName("choices.data")] + public QueryData? ChoicesData { get; set; } /// - /// Controls if the image can be expanded to full screen. + /// Controls whether the input should be displayed as a dropdown (compact) or a list of radio buttons or checkboxes (expanded). /// - [JsonPropertyName("allowExpand")] - public bool? AllowExpand { get; set; } + [JsonPropertyName("style")] + public ChoiceSetInputStyle? Style { get; set; } = ChoiceSetInputStyle.Compact; - [JsonPropertyName("msteams")] - public TeamsImageProperties? Msteams { get; set; } + /// + /// Controls whether multiple choices can be selected. + /// + [JsonPropertyName("isMultiSelect")] + public bool? IsMultiSelect { get; set; } = false; /// - /// The height of the image. + /// The text to display as a placeholder when the user has not entered any value. /// - [JsonPropertyName("height")] - public string? Height { get; set; } + [JsonPropertyName("placeholder")] + public string? Placeholder { get; set; } + + /// + /// Controls if choice titles should wrap. + /// + [JsonPropertyName("wrap")] + public bool? Wrap { get; set; } = true; + + /// + /// Controls whether choice items are arranged in multiple columns in expanded mode, or in a single column. Default is false. + /// + [JsonPropertyName("useMultipleColumns")] + public bool? UseMultipleColumns { get; set; } = false; + + /// + /// The minimum width, in pixels, for each column when using a multi-column layout. This ensures that choice items remain readable even when horizontal space is limited. Default is 100 pixels. + /// + [JsonPropertyName("minColumnWidth")] + public string? MinColumnWidth { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -6467,13 +8766,13 @@ public class Image : CardElement [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } - public Image(string url) + public ChoiceSetInput(params IList choices) { - this.Url = url; + this.Choices = choices; } /// - /// Serializes this Image into a JSON string. + /// Serializes this ChoiceSetInput into a JSON string. /// public string Serialize() { @@ -6487,154 +8786,273 @@ public string Serialize() ); } - public Image WithId(string value) + public ChoiceSetInput WithKey(string value) + { + this.Key = value; + return this; + } + + public ChoiceSetInput WithId(string value) { this.Id = value; return this; } - public Image WithRequires(HostCapabilities value) + public ChoiceSetInput WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public Image WithLang(string value) + public ChoiceSetInput WithLang(string value) { this.Lang = value; return this; } - public Image WithIsVisible(bool value) + public ChoiceSetInput WithIsVisible(bool value) { this.IsVisible = value; return this; } - public Image WithSeparator(bool value) + public ChoiceSetInput WithSeparator(bool value) { this.Separator = value; return this; } - public Image WithHorizontalAlignment(HorizontalAlignment value) + public ChoiceSetInput WithHeight(ElementHeight value) { - this.HorizontalAlignment = value; + this.Height = value; return this; } - public Image WithSpacing(Spacing value) + public ChoiceSetInput WithSpacing(Spacing value) { this.Spacing = value; return this; } - public Image WithTargetWidth(TargetWidth value) + public ChoiceSetInput WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public Image WithIsSortKey(bool value) + public ChoiceSetInput WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public Image WithUrl(string value) + public ChoiceSetInput WithLabel(string value) { - this.Url = value; + this.Label = value; return this; } - public Image WithAltText(string value) + public ChoiceSetInput WithIsRequired(bool value) { - this.AltText = value; + this.IsRequired = value; return this; } - public Image WithBackgroundColor(string value) + public ChoiceSetInput WithErrorMessage(string value) { - this.BackgroundColor = value; + this.ErrorMessage = value; return this; } - public Image WithStyle(ImageStyle value) + public ChoiceSetInput WithValueChangedAction(Action value) + { + this.ValueChangedAction = value; + return this; + } + + public ChoiceSetInput WithValue(string value) + { + this.Value = value; + return this; + } + + public ChoiceSetInput WithChoices(params IList value) + { + this.Choices = value; + return this; + } + + public ChoiceSetInput WithChoicesData(QueryData value) + { + this.ChoicesData = value; + return this; + } + + public ChoiceSetInput WithStyle(ChoiceSetInputStyle value) { this.Style = value; return this; } - public Image WithSize(Size value) + public ChoiceSetInput WithIsMultiSelect(bool value) { - this.Size = value; + this.IsMultiSelect = value; return this; } - public Image WithWidth(string value) + public ChoiceSetInput WithPlaceholder(string value) { - this.Width = value; + this.Placeholder = value; return this; } - public Image WithSelectAction(Action value) + public ChoiceSetInput WithWrap(bool value) { - this.SelectAction = value; + this.Wrap = value; return this; } - public Image WithAllowExpand(bool value) + public ChoiceSetInput WithUseMultipleColumns(bool value) { - this.AllowExpand = value; + this.UseMultipleColumns = value; + return this; + } + + public ChoiceSetInput WithMinColumnWidth(string value) + { + this.MinColumnWidth = value; + return this; + } + + public ChoiceSetInput WithGridArea(string value) + { + this.GridArea = value; + return this; + } + + public ChoiceSetInput WithFallback(IUnion value) + { + this.Fallback = value; return this; } +} + +/// +/// A choice as used by the Input.ChoiceSet input. +/// +public class Choice : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type Choice. + /// + public static Choice? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The text to display for the choice. + /// + [JsonPropertyName("title")] + public string? Title { get; set; } + + /// + /// The value associated with the choice, as sent to the Bot when an Action.Submit or Action.Execute is invoked + /// + [JsonPropertyName("value")] + public string? Value { get; set; } - public Image WithMsteams(TeamsImageProperties value) + /// + /// Serializes this Choice into a JSON string. + /// + public string Serialize() { - this.Msteams = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public Image WithHeight(string value) + public Choice WithKey(string value) { - this.Height = value; + this.Key = value; return this; } - public Image WithGridArea(string value) + public Choice WithTitle(string value) { - this.GridArea = value; + this.Title = value; return this; } - public Image WithFallback(IUnion value) + public Choice WithValue(string value) { - this.Fallback = value; + this.Value = value; return this; } } /// -/// Represents a set of Teams-specific properties on an image. +/// Defines a query to dynamically fetch data from a Bot. /// -public class TeamsImageProperties : SerializableObject +public class QueryData : SerializableObject { /// - /// Deserializes a JSON string into an object of type TeamsImageProperties. + /// Deserializes a JSON string into an object of type QueryData. /// - public static TeamsImageProperties? Deserialize(string json) + public static QueryData? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Controls if the image is expandable in Teams. This property is equivalent to the Image.allowExpand property. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("allowExpand")] - public bool? AllowExpand { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// Serializes this TeamsImageProperties into a JSON string. + /// Must be **Data.Query**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "Data.Query"; + + /// + /// The dataset from which to fetch the data. + /// + [JsonPropertyName("dataset")] + public string? Dataset { get; set; } + + /// + /// Controls which inputs are associated with the Data.Query. When a Data.Query is executed, the values of the associated inputs are sent to the Bot, allowing it to perform filtering operations based on the user's input. + /// + [JsonPropertyName("associatedInputs")] + public AssociatedInputs? AssociatedInputs { get; set; } + + /// + /// The maximum number of data items that should be returned by the query. Card authors should not specify this property in their card payload. It is determined by the client and sent to the Bot to enable pagination. + /// + [JsonPropertyName("count")] + public float? Count { get; set; } + + /// + /// The number of data items to be skipped by the query. Card authors should not specify this property in their card payload. It is determined by the client and sent to the Bot to enable pagination. + /// + [JsonPropertyName("skip")] + public float? Skip { get; set; } + + /// + /// Serializes this QueryData into a JSON string. /// public string Serialize() { @@ -6648,31 +9066,61 @@ public string Serialize() ); } - public TeamsImageProperties WithAllowExpand(bool value) + public QueryData WithKey(string value) { - this.AllowExpand = value; + this.Key = value; + return this; + } + + public QueryData WithDataset(string value) + { + this.Dataset = value; + return this; + } + + public QueryData WithAssociatedInputs(AssociatedInputs value) + { + this.AssociatedInputs = value; + return this; + } + + public QueryData WithCount(float value) + { + this.Count = value; + return this; + } + + public QueryData WithSkip(float value) + { + this.Skip = value; return this; } } /// -/// An input to allow the user to enter text. +/// An input to allow the user to rate something using stars. /// -public class TextInput : CardElement +public class RatingInput : CardElement { /// - /// Deserializes a JSON string into an object of type TextInput. + /// Deserializes a JSON string into an object of type RatingInput. /// - public static TextInput? Deserialize(string json) + public static RatingInput? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Input.Text**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Input.Rating**. /// [JsonPropertyName("type")] - public string Type { get; } = "Input.Text"; + public string Type { get; } = "Input.Rating"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -6684,7 +9132,7 @@ public class TextInput : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -6696,25 +9144,25 @@ public class TextInput : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -6726,7 +9174,7 @@ public class TextInput : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// /// The label of the input. @@ -6740,7 +9188,7 @@ public class TextInput : CardElement /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. /// [JsonPropertyName("isRequired")] - public bool? IsRequired { get; set; } + public bool? IsRequired { get; set; } = false; /// /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. @@ -6752,49 +9200,37 @@ public class TextInput : CardElement /// An Action.ResetInputs action that will be executed when the value of the input changes. /// [JsonPropertyName("valueChangedAction")] - public ResetInputsAction? ValueChangedAction { get; set; } + public Action? ValueChangedAction { get; set; } /// /// The default value of the input. /// [JsonPropertyName("value")] - public string? Value { get; set; } - - /// - /// The maximum length of the text in the input. - /// - [JsonPropertyName("maxLength")] - public float? MaxLength { get; set; } - - /// - /// Controls if the input should allow multiple lines of text. - /// - [JsonPropertyName("isMultiline")] - public bool? IsMultiline { get; set; } + public float? Value { get; set; } /// - /// The text to display as a placeholder when the user hasn't entered a value. + /// The number of stars to display. /// - [JsonPropertyName("placeholder")] - public string? Placeholder { get; set; } + [JsonPropertyName("max")] + public float? Max { get; set; } = 5; /// - /// The style of the input. + /// Controls if the user can select half stars. /// - [JsonPropertyName("style")] - public InputTextStyle? Style { get; set; } + [JsonPropertyName("allowHalfSteps")] + public bool? AllowHalfSteps { get; set; } = false; /// - /// The action that should be displayed as a button alongside the input. Action.ShowCard is not supported. + /// The size of the stars. /// - [JsonPropertyName("inlineAction")] - public Action? InlineAction { get; set; } + [JsonPropertyName("size")] + public RatingSize? Size { get; set; } = RatingSize.Large; /// - /// The regular expression to validate the input. + /// The color of the stars. /// - [JsonPropertyName("regex")] - public string? Regex { get; set; } + [JsonPropertyName("color")] + public RatingColor? Color { get; set; } = RatingColor.Neutral; /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -6809,7 +9245,7 @@ public class TextInput : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this TextInput into a JSON string. + /// Serializes this RatingInput into a JSON string. /// public string Serialize() { @@ -6823,133 +9259,127 @@ public string Serialize() ); } - public TextInput WithId(string value) + public RatingInput WithKey(string value) + { + this.Key = value; + return this; + } + + public RatingInput WithId(string value) { this.Id = value; return this; } - public TextInput WithRequires(HostCapabilities value) + public RatingInput WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public TextInput WithLang(string value) + public RatingInput WithLang(string value) { this.Lang = value; return this; } - public TextInput WithIsVisible(bool value) + public RatingInput WithIsVisible(bool value) { this.IsVisible = value; return this; } - public TextInput WithSeparator(bool value) + public RatingInput WithSeparator(bool value) { this.Separator = value; return this; } - public TextInput WithHeight(ElementHeight value) + public RatingInput WithHeight(ElementHeight value) { this.Height = value; return this; } - public TextInput WithSpacing(Spacing value) + public RatingInput WithSpacing(Spacing value) { this.Spacing = value; return this; } - public TextInput WithTargetWidth(TargetWidth value) + public RatingInput WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public TextInput WithIsSortKey(bool value) + public RatingInput WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public TextInput WithLabel(string value) + public RatingInput WithLabel(string value) { this.Label = value; return this; } - public TextInput WithIsRequired(bool value) + public RatingInput WithIsRequired(bool value) { this.IsRequired = value; return this; } - public TextInput WithErrorMessage(string value) + public RatingInput WithErrorMessage(string value) { this.ErrorMessage = value; return this; } - public TextInput WithValueChangedAction(ResetInputsAction value) + public RatingInput WithValueChangedAction(Action value) { this.ValueChangedAction = value; return this; } - public TextInput WithValue(string value) + public RatingInput WithValue(float value) { this.Value = value; return this; } - public TextInput WithMaxLength(float value) - { - this.MaxLength = value; - return this; - } - - public TextInput WithIsMultiline(bool value) - { - this.IsMultiline = value; - return this; - } - - public TextInput WithPlaceholder(string value) + public RatingInput WithMax(float value) { - this.Placeholder = value; + this.Max = value; return this; } - public TextInput WithStyle(InputTextStyle value) + public RatingInput WithAllowHalfSteps(bool value) { - this.Style = value; + this.AllowHalfSteps = value; return this; } - public TextInput WithInlineAction(Action value) + public RatingInput WithSize(RatingSize value) { - this.InlineAction = value; + this.Size = value; return this; } - public TextInput WithRegex(string value) + public RatingInput WithColor(RatingColor value) { - this.Regex = value; + this.Color = value; return this; } - public TextInput WithGridArea(string value) + public RatingInput WithGridArea(string value) { this.GridArea = value; return this; } - public TextInput WithFallback(IUnion value) + public RatingInput WithFallback(IUnion value) { this.Fallback = value; return this; @@ -6957,23 +9387,29 @@ public TextInput WithFallback(IUnion value) } /// -/// An input to allow the user to select a date. +/// A read-only star rating element, to display the rating of something. /// -public class DateInput : CardElement +public class Rating : CardElement { /// - /// Deserializes a JSON string into an object of type DateInput. + /// Deserializes a JSON string into an object of type Rating. /// - public static DateInput? Deserialize(string json) + public static Rating? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Input.Date**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Rating**. /// [JsonPropertyName("type")] - public string Type { get; } = "Input.Date"; + public string Type { get; } = "Rating"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -6985,7 +9421,7 @@ public class DateInput : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -6997,25 +9433,31 @@ public class DateInput : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; + + /// + /// Controls how the element should be horizontally aligned. + /// + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -7027,57 +9469,43 @@ public class DateInput : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The label of the input. - /// - /// A label should **always** be provided to ensure the best user experience especially for users of assistive technology. - /// - [JsonPropertyName("label")] - public string? Label { get; set; } - - /// - /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. - /// - [JsonPropertyName("isRequired")] - public bool? IsRequired { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. + /// The value of the rating. Must be between 0 and max. /// - [JsonPropertyName("errorMessage")] - public string? ErrorMessage { get; set; } + [JsonPropertyName("value")] + public float? Value { get; set; } /// - /// An Action.ResetInputs action that will be executed when the value of the input changes. + /// The number of "votes" associated with the rating. /// - [JsonPropertyName("valueChangedAction")] - public ResetInputsAction? ValueChangedAction { get; set; } + [JsonPropertyName("count")] + public float? Count { get; set; } /// - /// The default value of the input, in the `YYYY-MM-DD` format. + /// The number of stars to display. /// - [JsonPropertyName("value")] - public string? Value { get; set; } + [JsonPropertyName("max")] + public float? Max { get; set; } = 5; /// - /// The text to display as a placeholder when the user has not selected a date. + /// The size of the stars. /// - [JsonPropertyName("placeholder")] - public string? Placeholder { get; set; } + [JsonPropertyName("size")] + public RatingSize? Size { get; set; } = RatingSize.Large; /// - /// The minimum date that can be selected. + /// The color of the stars. /// - [JsonPropertyName("min")] - public string? Min { get; set; } + [JsonPropertyName("color")] + public RatingColor? Color { get; set; } = RatingColor.Neutral; /// - /// The maximum date that can be selected. + /// The style of the stars. /// - [JsonPropertyName("max")] - public string? Max { get; set; } + [JsonPropertyName("style")] + public RatingStyle? Style { get; set; } = RatingStyle.Default; /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -7092,7 +9520,7 @@ public class DateInput : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this DateInput into a JSON string. + /// Serializes this Rating into a JSON string. /// public string Serialize() { @@ -7106,115 +9534,115 @@ public string Serialize() ); } - public DateInput WithId(string value) + public Rating WithKey(string value) + { + this.Key = value; + return this; + } + + public Rating WithId(string value) { this.Id = value; return this; } - public DateInput WithRequires(HostCapabilities value) + public Rating WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public DateInput WithLang(string value) + public Rating WithLang(string value) { this.Lang = value; return this; } - public DateInput WithIsVisible(bool value) + public Rating WithIsVisible(bool value) { this.IsVisible = value; return this; } - public DateInput WithSeparator(bool value) + public Rating WithSeparator(bool value) { this.Separator = value; return this; } - public DateInput WithHeight(ElementHeight value) + public Rating WithHeight(ElementHeight value) { this.Height = value; return this; } - public DateInput WithSpacing(Spacing value) - { - this.Spacing = value; - return this; - } - - public DateInput WithTargetWidth(TargetWidth value) + public Rating WithHorizontalAlignment(HorizontalAlignment value) { - this.TargetWidth = value; + this.HorizontalAlignment = value; return this; } - public DateInput WithIsSortKey(bool value) + public Rating WithSpacing(Spacing value) { - this.IsSortKey = value; + this.Spacing = value; return this; } - public DateInput WithLabel(string value) + public Rating WithTargetWidth(TargetWidth value) { - this.Label = value; + this.TargetWidth = value; return this; } - public DateInput WithIsRequired(bool value) + public Rating WithIsSortKey(bool value) { - this.IsRequired = value; + this.IsSortKey = value; return this; } - public DateInput WithErrorMessage(string value) + public Rating WithValue(float value) { - this.ErrorMessage = value; + this.Value = value; return this; } - public DateInput WithValueChangedAction(ResetInputsAction value) + public Rating WithCount(float value) { - this.ValueChangedAction = value; + this.Count = value; return this; } - public DateInput WithValue(string value) + public Rating WithMax(float value) { - this.Value = value; + this.Max = value; return this; } - public DateInput WithPlaceholder(string value) + public Rating WithSize(RatingSize value) { - this.Placeholder = value; + this.Size = value; return this; } - public DateInput WithMin(string value) + public Rating WithColor(RatingColor value) { - this.Min = value; + this.Color = value; return this; } - public DateInput WithMax(string value) + public Rating WithStyle(RatingStyle value) { - this.Max = value; + this.Style = value; return this; } - public DateInput WithGridArea(string value) + public Rating WithGridArea(string value) { this.GridArea = value; return this; } - public DateInput WithFallback(IUnion value) + public Rating WithFallback(IUnion value) { this.Fallback = value; return this; @@ -7222,23 +9650,29 @@ public DateInput WithFallback(IUnion value) } /// -/// An input to allow the user to select a time. +/// A special type of button with an icon, title and description. /// -public class TimeInput : CardElement +public class CompoundButton : CardElement { /// - /// Deserializes a JSON string into an object of type TimeInput. + /// Deserializes a JSON string into an object of type CompoundButton. /// - public static TimeInput? Deserialize(string json) + public static CompoundButton? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Input.Time**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **CompoundButton**. /// [JsonPropertyName("type")] - public string Type { get; } = "Input.Time"; + public string Type { get; } = "CompoundButton"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -7250,7 +9684,7 @@ public class TimeInput : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -7262,25 +9696,31 @@ public class TimeInput : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; + + /// + /// Controls how the element should be horizontally aligned. + /// + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -7292,57 +9732,37 @@ public class TimeInput : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The label of the input. - /// - /// A label should **always** be provided to ensure the best user experience especially for users of assistive technology. - /// - [JsonPropertyName("label")] - public string? Label { get; set; } - - /// - /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. - /// - [JsonPropertyName("isRequired")] - public bool? IsRequired { get; set; } - - /// - /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. - /// - [JsonPropertyName("errorMessage")] - public string? ErrorMessage { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// An Action.ResetInputs action that will be executed when the value of the input changes. + /// The icon to show on the button. /// - [JsonPropertyName("valueChangedAction")] - public ResetInputsAction? ValueChangedAction { get; set; } + [JsonPropertyName("icon")] + public IconInfo? Icon { get; set; } /// - /// The default value of the input, in the `HH:MM` format. + /// The badge to show on the button. /// - [JsonPropertyName("value")] - public string? Value { get; set; } + [JsonPropertyName("badge")] + public string? Badge { get; set; } /// - /// The text to display as a placeholder when the user hasn't entered a value. + /// The title of the button. /// - [JsonPropertyName("placeholder")] - public string? Placeholder { get; set; } + [JsonPropertyName("title")] + public string? Title { get; set; } /// - /// The minimum time that can be selected, in the `HH:MM` format. + /// The description text of the button. /// - [JsonPropertyName("min")] - public string? Min { get; set; } + [JsonPropertyName("description")] + public string? Description { get; set; } /// - /// The maximum time that can be selected, in the `HH:MM` format. + /// An Action that will be invoked when the button is tapped or clicked. Action.ShowCard is not supported. /// - [JsonPropertyName("max")] - public string? Max { get; set; } + [JsonPropertyName("selectAction")] + public Action? SelectAction { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -7357,7 +9777,7 @@ public class TimeInput : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this TimeInput into a JSON string. + /// Serializes this CompoundButton into a JSON string. /// public string Serialize() { @@ -7371,139 +9791,228 @@ public string Serialize() ); } - public TimeInput WithId(string value) + public CompoundButton WithKey(string value) + { + this.Key = value; + return this; + } + + public CompoundButton WithId(string value) { this.Id = value; return this; } - public TimeInput WithRequires(HostCapabilities value) + public CompoundButton WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public TimeInput WithLang(string value) + public CompoundButton WithLang(string value) { this.Lang = value; return this; } - public TimeInput WithIsVisible(bool value) + public CompoundButton WithIsVisible(bool value) { this.IsVisible = value; return this; } - public TimeInput WithSeparator(bool value) + public CompoundButton WithSeparator(bool value) { this.Separator = value; return this; } - public TimeInput WithHeight(ElementHeight value) + public CompoundButton WithHeight(ElementHeight value) { this.Height = value; return this; } - public TimeInput WithSpacing(Spacing value) + public CompoundButton WithHorizontalAlignment(HorizontalAlignment value) + { + this.HorizontalAlignment = value; + return this; + } + + public CompoundButton WithSpacing(Spacing value) { this.Spacing = value; return this; } - public TimeInput WithTargetWidth(TargetWidth value) + public CompoundButton WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public TimeInput WithIsSortKey(bool value) + public CompoundButton WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public TimeInput WithLabel(string value) + public CompoundButton WithIcon(IconInfo value) { - this.Label = value; + this.Icon = value; return this; } - public TimeInput WithIsRequired(bool value) + public CompoundButton WithBadge(string value) { - this.IsRequired = value; + this.Badge = value; + return this; + } + + public CompoundButton WithTitle(string value) + { + this.Title = value; + return this; + } + + public CompoundButton WithDescription(string value) + { + this.Description = value; + return this; + } + + public CompoundButton WithSelectAction(Action value) + { + this.SelectAction = value; + return this; + } + + public CompoundButton WithGridArea(string value) + { + this.GridArea = value; + return this; + } + + public CompoundButton WithFallback(IUnion value) + { + this.Fallback = value; return this; } +} + +/// +/// Defines information about a Fluent icon and how it should be rendered. +/// +public class IconInfo : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type IconInfo. + /// + public static IconInfo? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The name of the icon to display. + /// + [JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// The size of the icon. + /// + [JsonPropertyName("size")] + public IconSize? Size { get; set; } = IconSize.XSmall; - public TimeInput WithErrorMessage(string value) - { - this.ErrorMessage = value; - return this; - } + /// + /// The style of the icon. + /// + [JsonPropertyName("style")] + public IconStyle? Style { get; set; } = IconStyle.Regular; - public TimeInput WithValueChangedAction(ResetInputsAction value) - { - this.ValueChangedAction = value; - return this; - } + /// + /// The color of the icon. + /// + [JsonPropertyName("color")] + public TextColor? Color { get; set; } = TextColor.Default; - public TimeInput WithValue(string value) + /// + /// Serializes this IconInfo into a JSON string. + /// + public string Serialize() { - this.Value = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public TimeInput WithPlaceholder(string value) + public IconInfo WithKey(string value) { - this.Placeholder = value; + this.Key = value; return this; } - public TimeInput WithMin(string value) + public IconInfo WithName(string value) { - this.Min = value; + this.Name = value; return this; } - public TimeInput WithMax(string value) + public IconInfo WithSize(IconSize value) { - this.Max = value; + this.Size = value; return this; } - public TimeInput WithGridArea(string value) + public IconInfo WithStyle(IconStyle value) { - this.GridArea = value; + this.Style = value; return this; } - public TimeInput WithFallback(IUnion value) + public IconInfo WithColor(TextColor value) { - this.Fallback = value; + this.Color = value; return this; } } /// -/// An input to allow the user to enter a number. +/// A standalone icon element. Icons can be picked from the vast [Adaptive Card icon catalog](https://adaptivecards.microsoft.com/?topic=icon-catalog). /// -public class NumberInput : CardElement +public class Icon : CardElement { /// - /// Deserializes a JSON string into an object of type NumberInput. + /// Deserializes a JSON string into an object of type Icon. /// - public static NumberInput? Deserialize(string json) + public static Icon? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Input.Number**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Icon**. /// [JsonPropertyName("type")] - public string Type { get; } = "Input.Number"; + public string Type { get; } = "Icon"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -7515,7 +10024,7 @@ public class NumberInput : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -7527,25 +10036,25 @@ public class NumberInput : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// - /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. + /// Controls how the element should be horizontally aligned. /// - [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -7557,57 +10066,37 @@ public class NumberInput : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The label of the input. - /// - /// A label should **always** be provided to ensure the best user experience especially for users of assistive technology. - /// - [JsonPropertyName("label")] - public string? Label { get; set; } - - /// - /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. - /// - [JsonPropertyName("isRequired")] - public bool? IsRequired { get; set; } - - /// - /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. - /// - [JsonPropertyName("errorMessage")] - public string? ErrorMessage { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// An Action.ResetInputs action that will be executed when the value of the input changes. + /// The name of the icon to display. /// - [JsonPropertyName("valueChangedAction")] - public ResetInputsAction? ValueChangedAction { get; set; } + [JsonPropertyName("name")] + public string? Name { get; set; } /// - /// The default value of the input. + /// The size of the icon. /// - [JsonPropertyName("value")] - public float? Value { get; set; } + [JsonPropertyName("size")] + public IconSize? Size { get; set; } = IconSize.Standard; /// - /// The text to display as a placeholder when the user hasn't entered a value. + /// The style of the icon. /// - [JsonPropertyName("placeholder")] - public string? Placeholder { get; set; } + [JsonPropertyName("style")] + public IconStyle? Style { get; set; } = IconStyle.Regular; /// - /// The minimum value that can be entered. + /// The color of the icon. /// - [JsonPropertyName("min")] - public float? Min { get; set; } + [JsonPropertyName("color")] + public TextColor? Color { get; set; } = TextColor.Default; /// - /// The maximum value that can be entered. + /// An Action that will be invoked when the icon is tapped or clicked. Action.ShowCard is not supported. /// - [JsonPropertyName("max")] - public float? Max { get; set; } + [JsonPropertyName("selectAction")] + public Action? SelectAction { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -7621,8 +10110,13 @@ public class NumberInput : CardElement [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } + public Icon(string name) + { + this.Name = name; + } + /// - /// Serializes this NumberInput into a JSON string. + /// Serializes this Icon into a JSON string. /// public string Serialize() { @@ -7636,115 +10130,103 @@ public string Serialize() ); } - public NumberInput WithId(string value) + public Icon WithKey(string value) + { + this.Key = value; + return this; + } + + public Icon WithId(string value) { this.Id = value; return this; } - public NumberInput WithRequires(HostCapabilities value) + public Icon WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public NumberInput WithLang(string value) + public Icon WithLang(string value) { this.Lang = value; return this; } - public NumberInput WithIsVisible(bool value) + public Icon WithIsVisible(bool value) { this.IsVisible = value; return this; } - public NumberInput WithSeparator(bool value) + public Icon WithSeparator(bool value) { this.Separator = value; return this; } - public NumberInput WithHeight(ElementHeight value) + public Icon WithHorizontalAlignment(HorizontalAlignment value) { - this.Height = value; + this.HorizontalAlignment = value; return this; } - public NumberInput WithSpacing(Spacing value) + public Icon WithSpacing(Spacing value) { this.Spacing = value; return this; } - public NumberInput WithTargetWidth(TargetWidth value) + public Icon WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public NumberInput WithIsSortKey(bool value) + public Icon WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public NumberInput WithLabel(string value) - { - this.Label = value; - return this; - } - - public NumberInput WithIsRequired(bool value) - { - this.IsRequired = value; - return this; - } - - public NumberInput WithErrorMessage(string value) - { - this.ErrorMessage = value; - return this; - } - - public NumberInput WithValueChangedAction(ResetInputsAction value) + public Icon WithName(string value) { - this.ValueChangedAction = value; + this.Name = value; return this; } - public NumberInput WithValue(float value) + public Icon WithSize(IconSize value) { - this.Value = value; + this.Size = value; return this; } - public NumberInput WithPlaceholder(string value) + public Icon WithStyle(IconStyle value) { - this.Placeholder = value; + this.Style = value; return this; } - public NumberInput WithMin(float value) + public Icon WithColor(TextColor value) { - this.Min = value; + this.Color = value; return this; } - public NumberInput WithMax(float value) + public Icon WithSelectAction(Action value) { - this.Max = value; + this.SelectAction = value; return this; } - public NumberInput WithGridArea(string value) + public Icon WithGridArea(string value) { this.GridArea = value; return this; } - public NumberInput WithFallback(IUnion value) + public Icon WithFallback(IUnion value) { this.Fallback = value; return this; @@ -7752,23 +10234,29 @@ public NumberInput WithFallback(IUnion value) } /// -/// An input to allow the user to select between on/off states. +/// A carousel with sliding pages. /// -public class ToggleInput : CardElement +public class Carousel : CardElement { /// - /// Deserializes a JSON string into an object of type ToggleInput. + /// Deserializes a JSON string into an object of type Carousel. /// - public static ToggleInput? Deserialize(string json) + public static Carousel? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Input.Toggle**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Carousel**. /// [JsonPropertyName("type")] - public string Type { get; } = "Input.Toggle"; + public string Type { get; } = "Carousel"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -7780,7 +10268,7 @@ public class ToggleInput : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -7792,25 +10280,25 @@ public class ToggleInput : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -7822,63 +10310,25 @@ public class ToggleInput : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The label of the input. - /// - /// A label should **always** be provided to ensure the best user experience especially for users of assistive technology. - /// - [JsonPropertyName("label")] - public string? Label { get; set; } - - /// - /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. - /// - [JsonPropertyName("isRequired")] - public bool? IsRequired { get; set; } - - /// - /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. - /// - [JsonPropertyName("errorMessage")] - public string? ErrorMessage { get; set; } - - /// - /// An Action.ResetInputs action that will be executed when the value of the input changes. - /// - [JsonPropertyName("valueChangedAction")] - public ResetInputsAction? ValueChangedAction { get; set; } - - /// - /// The default value of the input. - /// - [JsonPropertyName("value")] - public string? Value { get; set; } - - /// - /// The title (caption) to display next to the toggle. - /// - [JsonPropertyName("title")] - public string? Title { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The value to send to the Bot when the toggle is on. + /// Controls if the container should bleed into its parent. A bleeding container extends into its parent's padding. /// - [JsonPropertyName("valueOn")] - public string? ValueOn { get; set; } + [JsonPropertyName("bleed")] + public bool? Bleed { get; set; } = false; /// - /// The value to send to the Bot when the toggle is off. + /// The minimum height, in pixels, of the container, in the `px` format. /// - [JsonPropertyName("valueOff")] - public string? ValueOff { get; set; } + [JsonPropertyName("minHeight")] + public string? MinHeight { get; set; } /// - /// Controls if the title should wrap. + /// Controls the type of animation to use to navigate between pages. /// - [JsonPropertyName("wrap")] - public bool? Wrap { get; set; } + [JsonPropertyName("pageAnimation")] + public CarouselPageAnimation? PageAnimation { get; set; } = CarouselPageAnimation.Slide; /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -7892,13 +10342,14 @@ public class ToggleInput : CardElement [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } - public ToggleInput(string title) - { - this.Title = title; - } + /// + /// The pages in the carousel. + /// + [JsonPropertyName("pages")] + public IList? Pages { get; set; } /// - /// Serializes this ToggleInput into a JSON string. + /// Serializes this Carousel into a JSON string. /// public string Serialize() { @@ -7912,145 +10363,127 @@ public string Serialize() ); } - public ToggleInput WithId(string value) + public Carousel WithKey(string value) + { + this.Key = value; + return this; + } + + public Carousel WithId(string value) { this.Id = value; return this; } - public ToggleInput WithRequires(HostCapabilities value) + public Carousel WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public ToggleInput WithLang(string value) + public Carousel WithLang(string value) { this.Lang = value; return this; } - public ToggleInput WithIsVisible(bool value) + public Carousel WithIsVisible(bool value) { this.IsVisible = value; return this; } - public ToggleInput WithSeparator(bool value) + public Carousel WithSeparator(bool value) { this.Separator = value; return this; } - public ToggleInput WithHeight(ElementHeight value) + public Carousel WithHeight(ElementHeight value) { this.Height = value; return this; } - public ToggleInput WithSpacing(Spacing value) + public Carousel WithSpacing(Spacing value) { this.Spacing = value; return this; } - public ToggleInput WithTargetWidth(TargetWidth value) + public Carousel WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public ToggleInput WithIsSortKey(bool value) + public Carousel WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public ToggleInput WithLabel(string value) - { - this.Label = value; - return this; - } - - public ToggleInput WithIsRequired(bool value) - { - this.IsRequired = value; - return this; - } - - public ToggleInput WithErrorMessage(string value) - { - this.ErrorMessage = value; - return this; - } - - public ToggleInput WithValueChangedAction(ResetInputsAction value) - { - this.ValueChangedAction = value; - return this; - } - - public ToggleInput WithValue(string value) - { - this.Value = value; - return this; - } - - public ToggleInput WithTitle(string value) + public Carousel WithBleed(bool value) { - this.Title = value; + this.Bleed = value; return this; } - public ToggleInput WithValueOn(string value) + public Carousel WithMinHeight(string value) { - this.ValueOn = value; + this.MinHeight = value; return this; } - public ToggleInput WithValueOff(string value) + public Carousel WithPageAnimation(CarouselPageAnimation value) { - this.ValueOff = value; + this.PageAnimation = value; return this; } - public ToggleInput WithWrap(bool value) + public Carousel WithGridArea(string value) { - this.Wrap = value; + this.GridArea = value; return this; } - public ToggleInput WithGridArea(string value) + public Carousel WithFallback(IUnion value) { - this.GridArea = value; + this.Fallback = value; return this; } - public ToggleInput WithFallback(IUnion value) + public Carousel WithPages(params IList value) { - this.Fallback = value; + this.Pages = value; return this; } } /// -/// An input to allow the user to select one or more values. +/// A badge element to show an icon and/or text in a compact form over a colored background. /// -public class ChoiceSetInput : CardElement +public class Badge : CardElement { /// - /// Deserializes a JSON string into an object of type ChoiceSetInput. + /// Deserializes a JSON string into an object of type Badge. /// - public static ChoiceSetInput? Deserialize(string json) + public static Badge? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Input.ChoiceSet**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Badge**. /// [JsonPropertyName("type")] - public string Type { get; } = "Input.ChoiceSet"; + public string Type { get; } = "Badge"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -8062,7 +10495,7 @@ public class ChoiceSetInput : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -8074,25 +10507,31 @@ public class ChoiceSetInput : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; + + /// + /// Controls how the element should be horizontally aligned. + /// + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -8104,87 +10543,55 @@ public class ChoiceSetInput : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The label of the input. - /// - /// A label should **always** be provided to ensure the best user experience especially for users of assistive technology. - /// - [JsonPropertyName("label")] - public string? Label { get; set; } - - /// - /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. + /// The text to display. /// - [JsonPropertyName("isRequired")] - public bool? IsRequired { get; set; } + [JsonPropertyName("text")] + public string? Text { get; set; } /// - /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. + /// The name of an icon from the [Adaptive Card icon catalog](https://adaptivecards.microsoft.com/?topic=icon-catalog) to display, in the `[,regular|filled]` format. If the style is not specified, the regular style is used. /// - [JsonPropertyName("errorMessage")] - public string? ErrorMessage { get; set; } + [JsonPropertyName("icon")] + public string? Icon { get; set; } /// - /// An Action.ResetInputs action that will be executed when the value of the input changes. + /// Controls the position of the icon. /// - [JsonPropertyName("valueChangedAction")] - public ResetInputsAction? ValueChangedAction { get; set; } + [JsonPropertyName("iconPosition")] + public BadgeIconPosition? IconPosition { get; set; } = BadgeIconPosition.Before; /// - /// The default value of the input. + /// Controls the strength of the background color. /// - [JsonPropertyName("value")] - public string? Value { get; set; } + [JsonPropertyName("appearance")] + public BadgeAppearance? Appearance { get; set; } = BadgeAppearance.Filled; /// - /// The choices associated with the input. + /// The size of the badge. /// - [JsonPropertyName("choices")] - public IList? Choices { get; set; } + [JsonPropertyName("size")] + public BadgeSize? Size { get; set; } = BadgeSize.Medium; /// - /// A Data.Query object that defines the dataset from which to dynamically fetch the choices for the input. + /// Controls the shape of the badge. /// - [JsonPropertyName("choices.data")] - public QueryData? ChoicesData { get; set; } + [JsonPropertyName("shape")] + public BadgeShape? Shape { get; set; } = BadgeShape.Circular; /// - /// Controls whether the input should be displayed as a dropdown (compact) or a list of radio buttons or checkboxes (expanded). + /// The style of the badge. /// [JsonPropertyName("style")] - public StyleEnum? Style { get; set; } - - /// - /// Controls whether multiple choices can be selected. - /// - [JsonPropertyName("isMultiSelect")] - public bool? IsMultiSelect { get; set; } - - /// - /// The text to display as a placeholder when the user has not entered any value. - /// - [JsonPropertyName("placeholder")] - public string? Placeholder { get; set; } - - /// - /// Controls if choice titles should wrap. - /// - [JsonPropertyName("wrap")] - public bool? Wrap { get; set; } + public BadgeStyle? Style { get; set; } = BadgeStyle.Default; /// - /// Controls whether choice items are arranged in multiple columns in expanded mode, or in a single column. Default is false. - /// - [JsonPropertyName("useMultipleColumns")] - public bool? UseMultipleColumns { get; set; } - - /// - /// The minimum width, in pixels, for each column when using a multi-column layout. This ensures that choice items remain readable even when horizontal space is limited. Default is 100 pixels. + /// Controls the tooltip text to display when the badge is hovered over. /// - [JsonPropertyName("minColumnWidth")] - public string? MinColumnWidth { get; set; } + [JsonPropertyName("tooltip")] + public string? Tooltip { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -8198,13 +10605,8 @@ public class ChoiceSetInput : CardElement [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } - public ChoiceSetInput(params IList choices) - { - this.Choices = choices; - } - /// - /// Serializes this ChoiceSetInput into a JSON string. + /// Serializes this Badge into a JSON string. /// public string Serialize() { @@ -8218,145 +10620,127 @@ public string Serialize() ); } - public ChoiceSetInput WithId(string value) + public Badge WithKey(string value) + { + this.Key = value; + return this; + } + + public Badge WithId(string value) { this.Id = value; return this; } - public ChoiceSetInput WithRequires(HostCapabilities value) + public Badge WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public ChoiceSetInput WithLang(string value) + public Badge WithLang(string value) { this.Lang = value; return this; } - public ChoiceSetInput WithIsVisible(bool value) + public Badge WithIsVisible(bool value) { this.IsVisible = value; return this; } - public ChoiceSetInput WithSeparator(bool value) + public Badge WithSeparator(bool value) { this.Separator = value; return this; } - public ChoiceSetInput WithHeight(ElementHeight value) + public Badge WithHeight(ElementHeight value) { this.Height = value; return this; } - public ChoiceSetInput WithSpacing(Spacing value) - { - this.Spacing = value; - return this; - } - - public ChoiceSetInput WithTargetWidth(TargetWidth value) - { - this.TargetWidth = value; - return this; - } - - public ChoiceSetInput WithIsSortKey(bool value) - { - this.IsSortKey = value; - return this; - } - - public ChoiceSetInput WithLabel(string value) - { - this.Label = value; - return this; - } - - public ChoiceSetInput WithIsRequired(bool value) + public Badge WithHorizontalAlignment(HorizontalAlignment value) { - this.IsRequired = value; + this.HorizontalAlignment = value; return this; } - public ChoiceSetInput WithErrorMessage(string value) + public Badge WithSpacing(Spacing value) { - this.ErrorMessage = value; + this.Spacing = value; return this; } - public ChoiceSetInput WithValueChangedAction(ResetInputsAction value) + public Badge WithTargetWidth(TargetWidth value) { - this.ValueChangedAction = value; + this.TargetWidth = value; return this; } - public ChoiceSetInput WithValue(string value) + public Badge WithIsSortKey(bool value) { - this.Value = value; + this.IsSortKey = value; return this; } - public ChoiceSetInput WithChoices(params IList value) + public Badge WithText(string value) { - this.Choices = value; + this.Text = value; return this; } - public ChoiceSetInput WithChoicesData(QueryData value) + public Badge WithIcon(string value) { - this.ChoicesData = value; + this.Icon = value; return this; } - public ChoiceSetInput WithStyle(StyleEnum value) + public Badge WithIconPosition(BadgeIconPosition value) { - this.Style = value; + this.IconPosition = value; return this; } - public ChoiceSetInput WithIsMultiSelect(bool value) + public Badge WithAppearance(BadgeAppearance value) { - this.IsMultiSelect = value; + this.Appearance = value; return this; } - public ChoiceSetInput WithPlaceholder(string value) + public Badge WithSize(BadgeSize value) { - this.Placeholder = value; + this.Size = value; return this; } - public ChoiceSetInput WithWrap(bool value) + public Badge WithShape(BadgeShape value) { - this.Wrap = value; + this.Shape = value; return this; } - public ChoiceSetInput WithUseMultipleColumns(bool value) + public Badge WithStyle(BadgeStyle value) { - this.UseMultipleColumns = value; + this.Style = value; return this; } - public ChoiceSetInput WithMinColumnWidth(string value) + public Badge WithTooltip(string value) { - this.MinColumnWidth = value; + this.Tooltip = value; return this; } - public ChoiceSetInput WithGridArea(string value) + public Badge WithGridArea(string value) { this.GridArea = value; return this; } - public ChoiceSetInput WithFallback(IUnion value) + public Badge WithFallback(IUnion value) { this.Fallback = value; return this; @@ -8364,103 +10748,122 @@ public ChoiceSetInput WithFallback(IUnion value) } /// -/// A choice as used by the Input.ChoiceSet input. +/// A spinning ring element, to indicate progress. /// -public class Choice : SerializableObject +public class ProgressRing : CardElement { /// - /// Deserializes a JSON string into an object of type Choice. + /// Deserializes a JSON string into an object of type ProgressRing. /// - public static Choice? Deserialize(string json) + public static ProgressRing? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The text to display for the choice. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("title")] - public string? Title { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The value associated with the choice, as sent to the Bot when an Action.Submit or Action.Execute is invoked + /// Must be **ProgressRing**. /// - [JsonPropertyName("value")] - public string? Value { get; set; } + [JsonPropertyName("type")] + public string Type { get; } = "ProgressRing"; /// - /// Serializes this Choice into a JSON string. + /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } + [JsonPropertyName("id")] + public string? Id { get; set; } - public Choice WithTitle(string value) - { - this.Title = value; - return this; - } + /// + /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). + /// + [JsonPropertyName("requires")] + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); - public Choice WithValue(string value) - { - this.Value = value; - return this; - } -} + /// + /// The locale associated with the element. + /// + [JsonPropertyName("lang")] + public string? Lang { get; set; } -/// -/// Defines a query to dynamically fetch data from a Bot. -/// -public class QueryData : SerializableObject -{ /// - /// Deserializes a JSON string into an object of type QueryData. + /// Controls the visibility of the element. /// - public static QueryData? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } + [JsonPropertyName("isVisible")] + public bool? IsVisible { get; set; } = true; /// - /// Must be **Data.Query**. + /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// - [JsonPropertyName("type")] - public string Type { get; } = "Data.Query"; + [JsonPropertyName("separator")] + public bool? Separator { get; set; } = false; /// - /// The dataset from which to fetch the data. + /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// - [JsonPropertyName("dataset")] - public string? Dataset { get; set; } + [JsonPropertyName("height")] + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// - /// Controls which inputs are associated with the Data.Query. When a Data.Query is executed, the values of the associated inputs are sent to the Bot, allowing it to perform filtering operations based on the user's input. + /// Controls how the element should be horizontally aligned. /// - [JsonPropertyName("associatedInputs")] - public AssociatedInputs? AssociatedInputs { get; set; } + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } /// - /// The maximum number of data items that should be returned by the query. Card authors should not specify this property in their card payload. It is determined by the client and sent to the Bot to enable pagination. + /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// - [JsonPropertyName("count")] - public float? Count { get; set; } + [JsonPropertyName("spacing")] + public Spacing? Spacing { get; set; } = Spacing.Default; /// - /// The number of data items to be skipped by the query. Card authors should not specify this property in their card payload. It is determined by the client and sent to the Bot to enable pagination. + /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). /// - [JsonPropertyName("skip")] - public float? Skip { get; set; } + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } /// - /// Serializes this QueryData into a JSON string. + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. + /// + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; + + /// + /// The label of the progress ring. + /// + [JsonPropertyName("label")] + public string? Label { get; set; } + + /// + /// Controls the relative position of the label to the progress ring. + /// + [JsonPropertyName("labelPosition")] + public ProgressRingLabelPosition? LabelPosition { get; set; } = ProgressRingLabelPosition.Below; + + /// + /// The size of the progress ring. + /// + [JsonPropertyName("size")] + public ProgressRingSize? Size { get; set; } = ProgressRingSize.Medium; + + /// + /// The area of a Layout.AreaGrid layout in which an element should be displayed. + /// + [JsonPropertyName("grid.area")] + public string? GridArea { get; set; } + + /// + /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// + [JsonPropertyName("fallback")] + public IUnion? Fallback { get; set; } + + /// + /// Serializes this ProgressRing into a JSON string. /// public string Serialize() { @@ -8474,49 +10877,127 @@ public string Serialize() ); } - public QueryData WithDataset(string value) + public ProgressRing WithKey(string value) { - this.Dataset = value; + this.Key = value; return this; } - public QueryData WithAssociatedInputs(AssociatedInputs value) + public ProgressRing WithId(string value) { - this.AssociatedInputs = value; + this.Id = value; return this; } - public QueryData WithCount(float value) + public ProgressRing WithRequires(HostCapabilities value) { - this.Count = value; + this.Requires = value; return this; } - public QueryData WithSkip(float value) + public ProgressRing WithLang(string value) { - this.Skip = value; + this.Lang = value; + return this; + } + + public ProgressRing WithIsVisible(bool value) + { + this.IsVisible = value; + return this; + } + + public ProgressRing WithSeparator(bool value) + { + this.Separator = value; + return this; + } + + public ProgressRing WithHeight(ElementHeight value) + { + this.Height = value; + return this; + } + + public ProgressRing WithHorizontalAlignment(HorizontalAlignment value) + { + this.HorizontalAlignment = value; + return this; + } + + public ProgressRing WithSpacing(Spacing value) + { + this.Spacing = value; + return this; + } + + public ProgressRing WithTargetWidth(TargetWidth value) + { + this.TargetWidth = value; + return this; + } + + public ProgressRing WithIsSortKey(bool value) + { + this.IsSortKey = value; + return this; + } + + public ProgressRing WithLabel(string value) + { + this.Label = value; + return this; + } + + public ProgressRing WithLabelPosition(ProgressRingLabelPosition value) + { + this.LabelPosition = value; + return this; + } + + public ProgressRing WithSize(ProgressRingSize value) + { + this.Size = value; + return this; + } + + public ProgressRing WithGridArea(string value) + { + this.GridArea = value; + return this; + } + + public ProgressRing WithFallback(IUnion value) + { + this.Fallback = value; return this; } } /// -/// An input to allow the user to rate something using stars. +/// A progress bar element, to represent a value within a range. /// -public class RatingInput : CardElement +public class ProgressBar : CardElement { /// - /// Deserializes a JSON string into an object of type RatingInput. + /// Deserializes a JSON string into an object of type ProgressBar. /// - public static RatingInput? Deserialize(string json) + public static ProgressBar? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Input.Rating**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **ProgressBar**. /// [JsonPropertyName("type")] - public string Type { get; } = "Input.Rating"; + public string Type { get; } = "ProgressBar"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -8528,7 +11009,7 @@ public class RatingInput : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -8540,93 +11021,61 @@ public class RatingInput : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } - - /// - /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. - /// - [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } - - /// - /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). - /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } - - /// - /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. - /// - [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The label of the input. - /// - /// A label should **always** be provided to ensure the best user experience especially for users of assistive technology. - /// - [JsonPropertyName("label")] - public string? Label { get; set; } - - /// - /// Controls whether the input is required. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. - /// - [JsonPropertyName("isRequired")] - public bool? IsRequired { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// - /// The error message to display when the input fails validation. See [Input validation](https://adaptivecards.microsoft.com/?topic=input-validation) for more details. + /// Controls how the element should be horizontally aligned. /// - [JsonPropertyName("errorMessage")] - public string? ErrorMessage { get; set; } + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } /// - /// An Action.ResetInputs action that will be executed when the value of the input changes. + /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// - [JsonPropertyName("valueChangedAction")] - public ResetInputsAction? ValueChangedAction { get; set; } + [JsonPropertyName("spacing")] + public Spacing? Spacing { get; set; } = Spacing.Default; /// - /// The default value of the input. + /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). /// - [JsonPropertyName("value")] - public float? Value { get; set; } + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } /// - /// The number of stars to display. + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// - [JsonPropertyName("max")] - public float? Max { get; set; } + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; /// - /// Controls if the user can select half stars. + /// The value of the progress bar. Must be between 0 and max. /// - [JsonPropertyName("allowHalfSteps")] - public bool? AllowHalfSteps { get; set; } + [JsonPropertyName("value")] + public float? Value { get; set; } /// - /// The size of the stars. + /// The maximum value of the progress bar. /// - [JsonPropertyName("size")] - public RatingSize? Size { get; set; } + [JsonPropertyName("max")] + public float? Max { get; set; } = 100; /// - /// The color of the stars. + /// The color of the progress bar. `color` has no effect when the `ProgressBar` is in indeterminate mode, in which case the "accent" color is always used. /// [JsonPropertyName("color")] - public RatingColor? Color { get; set; } + public ProgressBarColor? Color { get; set; } = ProgressBarColor.Accent; /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -8641,7 +11090,7 @@ public class RatingInput : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this RatingInput into a JSON string. + /// Serializes this ProgressBar into a JSON string. /// public string Serialize() { @@ -8655,121 +11104,97 @@ public string Serialize() ); } - public RatingInput WithId(string value) + public ProgressBar WithKey(string value) + { + this.Key = value; + return this; + } + + public ProgressBar WithId(string value) { this.Id = value; return this; } - public RatingInput WithRequires(HostCapabilities value) + public ProgressBar WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public RatingInput WithLang(string value) + public ProgressBar WithLang(string value) { this.Lang = value; return this; } - public RatingInput WithIsVisible(bool value) + public ProgressBar WithIsVisible(bool value) { this.IsVisible = value; return this; } - public RatingInput WithSeparator(bool value) + public ProgressBar WithSeparator(bool value) { this.Separator = value; return this; } - public RatingInput WithHeight(ElementHeight value) + public ProgressBar WithHeight(ElementHeight value) { this.Height = value; return this; } - public RatingInput WithSpacing(Spacing value) - { - this.Spacing = value; - return this; - } - - public RatingInput WithTargetWidth(TargetWidth value) - { - this.TargetWidth = value; - return this; - } - - public RatingInput WithIsSortKey(bool value) - { - this.IsSortKey = value; - return this; - } - - public RatingInput WithLabel(string value) + public ProgressBar WithHorizontalAlignment(HorizontalAlignment value) { - this.Label = value; + this.HorizontalAlignment = value; return this; } - public RatingInput WithIsRequired(bool value) + public ProgressBar WithSpacing(Spacing value) { - this.IsRequired = value; + this.Spacing = value; return this; } - public RatingInput WithErrorMessage(string value) + public ProgressBar WithTargetWidth(TargetWidth value) { - this.ErrorMessage = value; + this.TargetWidth = value; return this; } - public RatingInput WithValueChangedAction(ResetInputsAction value) + public ProgressBar WithIsSortKey(bool value) { - this.ValueChangedAction = value; + this.IsSortKey = value; return this; } - public RatingInput WithValue(float value) + public ProgressBar WithValue(float value) { this.Value = value; return this; } - public RatingInput WithMax(float value) + public ProgressBar WithMax(float value) { this.Max = value; return this; } - public RatingInput WithAllowHalfSteps(bool value) - { - this.AllowHalfSteps = value; - return this; - } - - public RatingInput WithSize(RatingSize value) - { - this.Size = value; - return this; - } - - public RatingInput WithColor(RatingColor value) + public ProgressBar WithColor(ProgressBarColor value) { this.Color = value; return this; } - public RatingInput WithGridArea(string value) + public ProgressBar WithGridArea(string value) { this.GridArea = value; return this; } - public RatingInput WithFallback(IUnion value) + public ProgressBar WithFallback(IUnion value) { this.Fallback = value; return this; @@ -8777,23 +11202,29 @@ public RatingInput WithFallback(IUnion value) } /// -/// A read-only star rating element, to display the rating of something. +/// A donut chart. /// -public class Rating : CardElement +public class DonutChart : CardElement { /// - /// Deserializes a JSON string into an object of type Rating. + /// Deserializes a JSON string into an object of type DonutChart. /// - public static Rating? Deserialize(string json) + public static DonutChart? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Rating**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Chart.Donut**. /// [JsonPropertyName("type")] - public string Type { get; } = "Rating"; + public string Type { get; } = "Chart.Donut"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -8805,7 +11236,7 @@ public class Rating : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -8817,19 +11248,19 @@ public class Rating : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -8841,7 +11272,7 @@ public class Rating : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -8853,43 +11284,67 @@ public class Rating : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The value of the rating. Must be between 0 and max. + /// The title of the chart. /// - [JsonPropertyName("value")] - public float? Value { get; set; } + [JsonPropertyName("title")] + public string? Title { get; set; } /// - /// The number of "votes" associated with the rating. + /// Controls whether the chart's title should be displayed. Defaults to `false`. /// - [JsonPropertyName("count")] - public float? Count { get; set; } + [JsonPropertyName("showTitle")] + public bool? ShowTitle { get; set; } = false; /// - /// The number of stars to display. + /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). /// - [JsonPropertyName("max")] - public float? Max { get; set; } + [JsonPropertyName("colorSet")] + public ChartColorSet? ColorSet { get; set; } /// - /// The size of the stars. + /// The maximum width, in pixels, of the chart, in the `px` format. /// - [JsonPropertyName("size")] - public RatingSize? Size { get; set; } + [JsonPropertyName("maxWidth")] + public string? MaxWidth { get; set; } /// - /// The color of the stars. + /// Controls whether the chart's legend should be displayed. /// - [JsonPropertyName("color")] - public RatingColor? Color { get; set; } + [JsonPropertyName("showLegend")] + public bool? ShowLegend { get; set; } = true; /// - /// The style of the stars. + /// The data to display in the chart. /// - [JsonPropertyName("style")] - public RatingStyle? Style { get; set; } + [JsonPropertyName("data")] + public IList? Data { get; set; } + + /// + /// The value that should be displayed in the center of a Donut chart. `value` is ignored for Pie charts. + /// + [JsonPropertyName("value")] + public string? Value { get; set; } + + /// + /// Controls the color of the value displayed in the center of a Donut chart. + /// + [JsonPropertyName("valueColor")] + public ChartColor? ValueColor { get; set; } + + /// + /// Controls the thickness of the donut segments. Default is **Thick**. + /// + [JsonPropertyName("thickness")] + public DonutThickness? Thickness { get; set; } + + /// + /// Controls whether the outlines of the donut segments are displayed. + /// + [JsonPropertyName("showOutlines")] + public bool? ShowOutlines { get; set; } = true; /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -8904,7 +11359,7 @@ public class Rating : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this Rating into a JSON string. + /// Serializes this DonutChart into a JSON string. /// public string Serialize() { @@ -8918,133 +11373,246 @@ public string Serialize() ); } - public Rating WithId(string value) + public DonutChart WithKey(string value) + { + this.Key = value; + return this; + } + + public DonutChart WithId(string value) { this.Id = value; return this; } - public Rating WithRequires(HostCapabilities value) + public DonutChart WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public Rating WithLang(string value) + public DonutChart WithLang(string value) { this.Lang = value; return this; } - public Rating WithIsVisible(bool value) + public DonutChart WithIsVisible(bool value) { this.IsVisible = value; return this; } - public Rating WithSeparator(bool value) + public DonutChart WithSeparator(bool value) { this.Separator = value; return this; } - public Rating WithHeight(ElementHeight value) + public DonutChart WithHeight(ElementHeight value) { this.Height = value; return this; } - public Rating WithHorizontalAlignment(HorizontalAlignment value) + public DonutChart WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public Rating WithSpacing(Spacing value) + public DonutChart WithSpacing(Spacing value) { this.Spacing = value; return this; } - public Rating WithTargetWidth(TargetWidth value) + public DonutChart WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public Rating WithIsSortKey(bool value) + public DonutChart WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public Rating WithValue(float value) + public DonutChart WithTitle(string value) + { + this.Title = value; + return this; + } + + public DonutChart WithShowTitle(bool value) + { + this.ShowTitle = value; + return this; + } + + public DonutChart WithColorSet(ChartColorSet value) + { + this.ColorSet = value; + return this; + } + + public DonutChart WithMaxWidth(string value) + { + this.MaxWidth = value; + return this; + } + + public DonutChart WithShowLegend(bool value) + { + this.ShowLegend = value; + return this; + } + + public DonutChart WithData(params IList value) + { + this.Data = value; + return this; + } + + public DonutChart WithValue(string value) { this.Value = value; return this; } - public Rating WithCount(float value) + public DonutChart WithValueColor(ChartColor value) { - this.Count = value; + this.ValueColor = value; return this; } - public Rating WithMax(float value) + public DonutChart WithThickness(DonutThickness value) { - this.Max = value; + this.Thickness = value; return this; } - public Rating WithSize(RatingSize value) + public DonutChart WithShowOutlines(bool value) { - this.Size = value; + this.ShowOutlines = value; + return this; + } + + public DonutChart WithGridArea(string value) + { + this.GridArea = value; + return this; + } + + public DonutChart WithFallback(IUnion value) + { + this.Fallback = value; return this; } +} + +/// +/// A data point in a Donut chart. +/// +public class DonutChartData : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type DonutChartData. + /// + public static DonutChartData? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The legend of the chart. + /// + [JsonPropertyName("legend")] + public string? Legend { get; set; } + + /// + /// The value associated with the data point. + /// + [JsonPropertyName("value")] + public float? Value { get; set; } = 0; + + /// + /// The color to use for the data point. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// + [JsonPropertyName("color")] + public ChartColor? Color { get; set; } + + /// + /// Serializes this DonutChartData into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } - public Rating WithColor(RatingColor value) + public DonutChartData WithKey(string value) { - this.Color = value; + this.Key = value; return this; } - public Rating WithStyle(RatingStyle value) + public DonutChartData WithLegend(string value) { - this.Style = value; + this.Legend = value; return this; } - public Rating WithGridArea(string value) + public DonutChartData WithValue(float value) { - this.GridArea = value; + this.Value = value; return this; } - public Rating WithFallback(IUnion value) + public DonutChartData WithColor(ChartColor value) { - this.Fallback = value; + this.Color = value; return this; } } /// -/// A special type of button with an icon, title and description. +/// A pie chart. /// -public class CompoundButton : CardElement +public class PieChart : CardElement { /// - /// Deserializes a JSON string into an object of type CompoundButton. + /// Deserializes a JSON string into an object of type PieChart. /// - public static CompoundButton? Deserialize(string json) + public static PieChart? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **CompoundButton**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Chart.Pie**. /// [JsonPropertyName("type")] - public string Type { get; } = "CompoundButton"; + public string Type { get; } = "Chart.Pie"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -9056,7 +11624,7 @@ public class CompoundButton : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -9068,19 +11636,19 @@ public class CompoundButton : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -9092,7 +11660,7 @@ public class CompoundButton : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -9104,37 +11672,67 @@ public class CompoundButton : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The icon to show on the button. + /// The title of the chart. /// - [JsonPropertyName("icon")] - public IconInfo? Icon { get; set; } + [JsonPropertyName("title")] + public string? Title { get; set; } /// - /// The badge to show on the button. + /// Controls whether the chart's title should be displayed. Defaults to `false`. /// - [JsonPropertyName("badge")] - public string? Badge { get; set; } + [JsonPropertyName("showTitle")] + public bool? ShowTitle { get; set; } = false; /// - /// The title of the button. + /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). /// - [JsonPropertyName("title")] - public string? Title { get; set; } + [JsonPropertyName("colorSet")] + public ChartColorSet? ColorSet { get; set; } /// - /// The description text of the button. + /// The maximum width, in pixels, of the chart, in the `px` format. /// - [JsonPropertyName("description")] - public string? Description { get; set; } + [JsonPropertyName("maxWidth")] + public string? MaxWidth { get; set; } /// - /// An Action that will be invoked when the button is tapped or clicked. Action.ShowCard is not supported. + /// Controls whether the chart's legend should be displayed. /// - [JsonPropertyName("selectAction")] - public Action? SelectAction { get; set; } + [JsonPropertyName("showLegend")] + public bool? ShowLegend { get; set; } = true; + + /// + /// The data to display in the chart. + /// + [JsonPropertyName("data")] + public IList? Data { get; set; } + + /// + /// The value that should be displayed in the center of a Donut chart. `value` is ignored for Pie charts. + /// + [JsonPropertyName("value")] + public string? Value { get; set; } + + /// + /// Controls the color of the value displayed in the center of a Donut chart. + /// + [JsonPropertyName("valueColor")] + public ChartColor? ValueColor { get; set; } + + /// + /// Controls the thickness of the donut segments. Default is **Thick**. + /// + [JsonPropertyName("thickness")] + public DonutThickness? Thickness { get; set; } + + /// + /// Controls whether the outlines of the donut segments are displayed. + /// + [JsonPropertyName("showOutlines")] + public bool? ShowOutlines { get; set; } = true; /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -9149,7 +11747,7 @@ public class CompoundButton : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this CompoundButton into a JSON string. + /// Serializes this PieChart into a JSON string. /// public string Serialize() { @@ -9163,204 +11761,169 @@ public string Serialize() ); } - public CompoundButton WithId(string value) + public PieChart WithKey(string value) + { + this.Key = value; + return this; + } + + public PieChart WithId(string value) { this.Id = value; return this; } - public CompoundButton WithRequires(HostCapabilities value) + public PieChart WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public CompoundButton WithLang(string value) + public PieChart WithLang(string value) { this.Lang = value; return this; } - public CompoundButton WithIsVisible(bool value) + public PieChart WithIsVisible(bool value) { this.IsVisible = value; return this; } - public CompoundButton WithSeparator(bool value) + public PieChart WithSeparator(bool value) { this.Separator = value; return this; } - public CompoundButton WithHeight(ElementHeight value) + public PieChart WithHeight(ElementHeight value) { this.Height = value; return this; } - public CompoundButton WithHorizontalAlignment(HorizontalAlignment value) + public PieChart WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public CompoundButton WithSpacing(Spacing value) + public PieChart WithSpacing(Spacing value) { this.Spacing = value; return this; } - public CompoundButton WithTargetWidth(TargetWidth value) + public PieChart WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public CompoundButton WithIsSortKey(bool value) + public PieChart WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public CompoundButton WithIcon(IconInfo value) + public PieChart WithTitle(string value) { - this.Icon = value; + this.Title = value; return this; } - public CompoundButton WithBadge(string value) + public PieChart WithShowTitle(bool value) { - this.Badge = value; + this.ShowTitle = value; return this; } - public CompoundButton WithTitle(string value) + public PieChart WithColorSet(ChartColorSet value) { - this.Title = value; + this.ColorSet = value; return this; } - public CompoundButton WithDescription(string value) + public PieChart WithMaxWidth(string value) { - this.Description = value; + this.MaxWidth = value; return this; } - public CompoundButton WithSelectAction(Action value) + public PieChart WithShowLegend(bool value) { - this.SelectAction = value; + this.ShowLegend = value; return this; } - public CompoundButton WithGridArea(string value) + public PieChart WithData(params IList value) { - this.GridArea = value; + this.Data = value; return this; } - public CompoundButton WithFallback(IUnion value) + public PieChart WithValue(string value) { - this.Fallback = value; + this.Value = value; return this; } -} - -/// -/// Defines information about a Fluent icon and how it should be rendered. -/// -public class IconInfo : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type IconInfo. - /// - public static IconInfo? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } - - /// - /// The name of the icon to display. - /// - [JsonPropertyName("name")] - public string? Name { get; set; } - - /// - /// The size of the icon. - /// - [JsonPropertyName("size")] - public IconSize? Size { get; set; } - - /// - /// The style of the icon. - /// - [JsonPropertyName("style")] - public IconStyle? Style { get; set; } - - /// - /// The color of the icon. - /// - [JsonPropertyName("color")] - public TextColor? Color { get; set; } - /// - /// Serializes this IconInfo into a JSON string. - /// - public string Serialize() + public PieChart WithValueColor(ChartColor value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.ValueColor = value; + return this; } - public IconInfo WithName(string value) + public PieChart WithThickness(DonutThickness value) { - this.Name = value; + this.Thickness = value; return this; } - public IconInfo WithSize(IconSize value) + public PieChart WithShowOutlines(bool value) { - this.Size = value; + this.ShowOutlines = value; return this; } - public IconInfo WithStyle(IconStyle value) + public PieChart WithGridArea(string value) { - this.Style = value; + this.GridArea = value; return this; } - public IconInfo WithColor(TextColor value) + public PieChart WithFallback(IUnion value) { - this.Color = value; + this.Fallback = value; return this; } } /// -/// A standalone icon element. Icons can be picked from the vast [Adaptive Card icon catalog](https://adaptivecards.microsoft.com/?topic=icon-catalog). +/// A grouped vertical bar chart. /// -public class Icon : CardElement +public class GroupedVerticalBarChart : CardElement { /// - /// Deserializes a JSON string into an object of type Icon. + /// Deserializes a JSON string into an object of type GroupedVerticalBarChart. /// - public static Icon? Deserialize(string json) + public static GroupedVerticalBarChart? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Icon**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Chart.VerticalBar.Grouped**. /// [JsonPropertyName("type")] - public string Type { get; } = "Icon"; + public string Type { get; } = "Chart.VerticalBar.Grouped"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -9372,7 +11935,7 @@ public class Icon : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -9384,13 +11947,19 @@ public class Icon : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; + + /// + /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. + /// + [JsonPropertyName("height")] + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -9402,7 +11971,7 @@ public class Icon : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -9414,37 +11983,91 @@ public class Icon : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The name of the icon to display. + /// The title of the chart. /// - [JsonPropertyName("name")] - public string? Name { get; set; } + [JsonPropertyName("title")] + public string? Title { get; set; } /// - /// The size of the icon. + /// Controls whether the chart's title should be displayed. Defaults to `false`. /// - [JsonPropertyName("size")] - public IconSize? Size { get; set; } + [JsonPropertyName("showTitle")] + public bool? ShowTitle { get; set; } = false; /// - /// The style of the icon. + /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// + [JsonPropertyName("colorSet")] + public ChartColorSet? ColorSet { get; set; } + + /// + /// The maximum width, in pixels, of the chart, in the `px` format. + /// + [JsonPropertyName("maxWidth")] + public string? MaxWidth { get; set; } + + /// + /// Controls whether the chart's legend should be displayed. + /// + [JsonPropertyName("showLegend")] + public bool? ShowLegend { get; set; } = true; + + /// + /// The title of the x axis. + /// + [JsonPropertyName("xAxisTitle")] + public string? XAxisTitle { get; set; } + + /// + /// The title of the y axis. + /// + [JsonPropertyName("yAxisTitle")] + public string? YAxisTitle { get; set; } + + /// + /// The color to use for all data points. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// + [JsonPropertyName("color")] + public ChartColor? Color { get; set; } + + /// + /// Controls if bars in the chart should be displayed as stacks instead of groups. + /// + /// **Note:** stacked vertical bar charts do not support custom Y ranges nor negative Y values. + /// + [JsonPropertyName("stacked")] + public bool? Stacked { get; set; } = false; + + /// + /// The data points in a series. + /// + [JsonPropertyName("data")] + public IList? Data { get; set; } + + /// + /// Controls if values should be displayed on each bar. /// - [JsonPropertyName("style")] - public IconStyle? Style { get; set; } + [JsonPropertyName("showBarValues")] + public bool? ShowBarValues { get; set; } = false; /// - /// The color of the icon. + /// The requested minimum for the Y axis range. The value used at runtime may be different to optimize visual presentation. + /// + /// `yMin` is ignored if `stacked` is set to `true`. /// - [JsonPropertyName("color")] - public TextColor? Color { get; set; } + [JsonPropertyName("yMin")] + public float? YMin { get; set; } /// - /// An Action that will be invoked when the icon is tapped or clicked. Action.ShowCard is not supported. + /// The requested maximum for the Y axis range. The value used at runtime may be different to optimize visual presentation. + /// + /// `yMax` is ignored if `stacked` is set to `true`. /// - [JsonPropertyName("selectAction")] - public Action? SelectAction { get; set; } + [JsonPropertyName("yMax")] + public float? YMax { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -9458,13 +12081,8 @@ public class Icon : CardElement [JsonPropertyName("fallback")] public IUnion? Fallback { get; set; } - public Icon(string name) - { - this.Name = name; - } - /// - /// Serializes this Icon into a JSON string. + /// Serializes this GroupedVerticalBarChart into a JSON string. /// public string Serialize() { @@ -9478,214 +12096,202 @@ public string Serialize() ); } - public Icon WithId(string value) + public GroupedVerticalBarChart WithKey(string value) + { + this.Key = value; + return this; + } + + public GroupedVerticalBarChart WithId(string value) { this.Id = value; return this; } - public Icon WithRequires(HostCapabilities value) + public GroupedVerticalBarChart WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public Icon WithLang(string value) + public GroupedVerticalBarChart WithLang(string value) { this.Lang = value; return this; } - public Icon WithIsVisible(bool value) + public GroupedVerticalBarChart WithIsVisible(bool value) { this.IsVisible = value; return this; } - public Icon WithSeparator(bool value) + public GroupedVerticalBarChart WithSeparator(bool value) { this.Separator = value; return this; } - public Icon WithHorizontalAlignment(HorizontalAlignment value) + public GroupedVerticalBarChart WithHeight(ElementHeight value) + { + this.Height = value; + return this; + } + + public GroupedVerticalBarChart WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public Icon WithSpacing(Spacing value) + public GroupedVerticalBarChart WithSpacing(Spacing value) { this.Spacing = value; return this; } - public Icon WithTargetWidth(TargetWidth value) + public GroupedVerticalBarChart WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public Icon WithIsSortKey(bool value) + public GroupedVerticalBarChart WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public Icon WithName(string value) + public GroupedVerticalBarChart WithTitle(string value) { - this.Name = value; + this.Title = value; return this; } - public Icon WithSize(IconSize value) + public GroupedVerticalBarChart WithShowTitle(bool value) { - this.Size = value; + this.ShowTitle = value; return this; } - public Icon WithStyle(IconStyle value) + public GroupedVerticalBarChart WithColorSet(ChartColorSet value) { - this.Style = value; + this.ColorSet = value; return this; } - public Icon WithColor(TextColor value) + public GroupedVerticalBarChart WithMaxWidth(string value) { - this.Color = value; + this.MaxWidth = value; return this; } - public Icon WithSelectAction(Action value) + public GroupedVerticalBarChart WithShowLegend(bool value) { - this.SelectAction = value; + this.ShowLegend = value; return this; } - public Icon WithGridArea(string value) + public GroupedVerticalBarChart WithXAxisTitle(string value) { - this.GridArea = value; + this.XAxisTitle = value; return this; } - public Icon WithFallback(IUnion value) + public GroupedVerticalBarChart WithYAxisTitle(string value) { - this.Fallback = value; + this.YAxisTitle = value; return this; } -} -/// -/// A carousel with sliding pages. -/// -public class Carousel : CardElement -{ - /// - /// Deserializes a JSON string into an object of type Carousel. - /// - public static Carousel? Deserialize(string json) + public GroupedVerticalBarChart WithColor(ChartColor value) { - return JsonSerializer.Deserialize(json); + this.Color = value; + return this; } - /// - /// Must be **Carousel**. - /// - [JsonPropertyName("type")] - public string Type { get; } = "Carousel"; - - /// - /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. - /// - [JsonPropertyName("id")] - public string? Id { get; set; } - - /// - /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). - /// - [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } - - /// - /// The locale associated with the element. - /// - [JsonPropertyName("lang")] - public string? Lang { get; set; } - - /// - /// Controls the visibility of the element. - /// - [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public GroupedVerticalBarChart WithStacked(bool value) + { + this.Stacked = value; + return this; + } - /// - /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. - /// - [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public GroupedVerticalBarChart WithData(params IList value) + { + this.Data = value; + return this; + } - /// - /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. - /// - [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public GroupedVerticalBarChart WithShowBarValues(bool value) + { + this.ShowBarValues = value; + return this; + } - /// - /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. - /// - [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public GroupedVerticalBarChart WithYMin(float value) + { + this.YMin = value; + return this; + } - /// - /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). - /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } + public GroupedVerticalBarChart WithYMax(float value) + { + this.YMax = value; + return this; + } - /// - /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. - /// - [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public GroupedVerticalBarChart WithGridArea(string value) + { + this.GridArea = value; + return this; + } - /// - /// Controls if the container should bleed into its parent. A bleeding container extends into its parent's padding. - /// - [JsonPropertyName("bleed")] - public bool? Bleed { get; set; } + public GroupedVerticalBarChart WithFallback(IUnion value) + { + this.Fallback = value; + return this; + } +} +/// +/// Represents a series of data points. +/// +public class GroupedVerticalBarChartData : SerializableObject +{ /// - /// The minimum height, in pixels, of the container, in the `px` format. + /// Deserializes a JSON string into an object of type GroupedVerticalBarChartData. /// - [JsonPropertyName("minHeight")] - public string? MinHeight { get; set; } + public static GroupedVerticalBarChartData? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } /// - /// Controls the type of animation to use to navigate between pages. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("pageAnimation")] - public CarouselPageAnimation? PageAnimation { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The area of a Layout.AreaGrid layout in which an element should be displayed. + /// The legend of the chart. /// - [JsonPropertyName("grid.area")] - public string? GridArea { get; set; } + [JsonPropertyName("legend")] + public string? Legend { get; set; } /// - /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// The data points in the series. /// - [JsonPropertyName("fallback")] - public IUnion? Fallback { get; set; } + [JsonPropertyName("values")] + public IList? Values { get; set; } /// - /// The pages in the carousel. + /// The color to use for all data points in the series. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). /// - [JsonPropertyName("pages")] - public IList? Pages { get; set; } + [JsonPropertyName("color")] + public ChartColor? Color { get; set; } /// - /// Serializes this Carousel into a JSON string. + /// Serializes this GroupedVerticalBarChartData into a JSON string. /// public string Serialize() { @@ -9699,115 +12305,120 @@ public string Serialize() ); } - public Carousel WithId(string value) - { - this.Id = value; - return this; - } - - public Carousel WithRequires(HostCapabilities value) - { - this.Requires = value; - return this; - } - - public Carousel WithLang(string value) - { - this.Lang = value; - return this; - } - - public Carousel WithIsVisible(bool value) - { - this.IsVisible = value; - return this; - } - - public Carousel WithSeparator(bool value) - { - this.Separator = value; - return this; - } - - public Carousel WithHeight(ElementHeight value) - { - this.Height = value; - return this; - } - - public Carousel WithSpacing(Spacing value) + public GroupedVerticalBarChartData WithKey(string value) { - this.Spacing = value; + this.Key = value; return this; } - public Carousel WithTargetWidth(TargetWidth value) + public GroupedVerticalBarChartData WithLegend(string value) { - this.TargetWidth = value; + this.Legend = value; return this; } - public Carousel WithIsSortKey(bool value) + public GroupedVerticalBarChartData WithValues(params IList value) { - this.IsSortKey = value; + this.Values = value; return this; } - public Carousel WithBleed(bool value) + public GroupedVerticalBarChartData WithColor(ChartColor value) { - this.Bleed = value; + this.Color = value; return this; } +} - public Carousel WithMinHeight(string value) +/// +/// A single data point in a bar chart. +/// +public class BarChartDataValue : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type BarChartDataValue. + /// + public static BarChartDataValue? Deserialize(string json) { - this.MinHeight = value; - return this; + return JsonSerializer.Deserialize(json); } - public Carousel WithPageAnimation(CarouselPageAnimation value) + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The x axis value of the data point. + /// + [JsonPropertyName("x")] + public string? X { get; set; } + + /// + /// The y axis value of the data point. + /// + [JsonPropertyName("y")] + public float? Y { get; set; } = 0; + + /// + /// Serializes this BarChartDataValue into a JSON string. + /// + public string Serialize() { - this.PageAnimation = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public Carousel WithGridArea(string value) + public BarChartDataValue WithKey(string value) { - this.GridArea = value; + this.Key = value; return this; } - public Carousel WithFallback(IUnion value) + public BarChartDataValue WithX(string value) { - this.Fallback = value; + this.X = value; return this; } - public Carousel WithPages(params IList value) + public BarChartDataValue WithY(float value) { - this.Pages = value; + this.Y = value; return this; } } /// -/// A badge element to show an icon and/or text in a compact form over a colored background. +/// A vertical bar chart. /// -public class Badge : CardElement +public class VerticalBarChart : CardElement { /// - /// Deserializes a JSON string into an object of type Badge. + /// Deserializes a JSON string into an object of type VerticalBarChart. /// - public static Badge? Deserialize(string json) + public static VerticalBarChart? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Badge**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Chart.VerticalBar**. /// [JsonPropertyName("type")] - public string Type { get; } = "Badge"; + public string Type { get; } = "Chart.VerticalBar"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -9819,7 +12430,7 @@ public class Badge : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -9831,19 +12442,19 @@ public class Badge : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -9855,7 +12466,7 @@ public class Badge : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -9867,55 +12478,79 @@ public class Badge : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The text to display. + /// The title of the chart. /// - [JsonPropertyName("text")] - public string? Text { get; set; } + [JsonPropertyName("title")] + public string? Title { get; set; } /// - /// The name of an icon from the [Adaptive Card icon catalog](https://adaptivecards.microsoft.com/?topic=icon-catalog) to display, in the `[,regular|filled]` format. If the style is not specified, the regular style is used. + /// Controls whether the chart's title should be displayed. Defaults to `false`. /// - [JsonPropertyName("icon")] - public string? Icon { get; set; } + [JsonPropertyName("showTitle")] + public bool? ShowTitle { get; set; } = false; /// - /// Controls the position of the icon. + /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). /// - [JsonPropertyName("iconPosition")] - public BadgeIconPosition? IconPosition { get; set; } + [JsonPropertyName("colorSet")] + public ChartColorSet? ColorSet { get; set; } /// - /// Controls the strength of the background color. + /// The maximum width, in pixels, of the chart, in the `px` format. /// - [JsonPropertyName("appearance")] - public BadgeAppearance? Appearance { get; set; } + [JsonPropertyName("maxWidth")] + public string? MaxWidth { get; set; } /// - /// The size of the badge. + /// Controls whether the chart's legend should be displayed. /// - [JsonPropertyName("size")] - public BadgeSize? Size { get; set; } + [JsonPropertyName("showLegend")] + public bool? ShowLegend { get; set; } = true; /// - /// Controls the shape of the badge. + /// The title of the x axis. /// - [JsonPropertyName("shape")] - public BadgeShape? Shape { get; set; } + [JsonPropertyName("xAxisTitle")] + public string? XAxisTitle { get; set; } /// - /// The style of the badge. + /// The title of the y axis. /// - [JsonPropertyName("style")] - public BadgeStyle? Style { get; set; } + [JsonPropertyName("yAxisTitle")] + public string? YAxisTitle { get; set; } /// - /// Controls the tooltip text to display when the badge is hovered over. + /// The data to display in the chart. /// - [JsonPropertyName("tooltip")] - public string? Tooltip { get; set; } + [JsonPropertyName("data")] + public IList? Data { get; set; } + + /// + /// The color to use for all data points. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// + [JsonPropertyName("color")] + public ChartColor? Color { get; set; } + + /// + /// Controls if the bar values should be displayed. + /// + [JsonPropertyName("showBarValues")] + public bool? ShowBarValues { get; set; } = false; + + /// + /// The requested minimum for the Y axis range. The value used at runtime may be different to optimize visual presentation. + /// + [JsonPropertyName("yMin")] + public float? YMin { get; set; } + + /// + /// The requested maximum for the Y axis range. The value used at runtime may be different to optimize visual presentation. + /// + [JsonPropertyName("yMax")] + public float? YMax { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -9930,7 +12565,7 @@ public class Badge : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this Badge into a JSON string. + /// Serializes this VerticalBarChart into a JSON string. /// public string Serialize() { @@ -9944,145 +12579,258 @@ public string Serialize() ); } - public Badge WithId(string value) + public VerticalBarChart WithKey(string value) + { + this.Key = value; + return this; + } + + public VerticalBarChart WithId(string value) { this.Id = value; return this; } - public Badge WithRequires(HostCapabilities value) + public VerticalBarChart WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public Badge WithLang(string value) + public VerticalBarChart WithLang(string value) { this.Lang = value; return this; } - public Badge WithIsVisible(bool value) + public VerticalBarChart WithIsVisible(bool value) { this.IsVisible = value; return this; } - public Badge WithSeparator(bool value) + public VerticalBarChart WithSeparator(bool value) { this.Separator = value; return this; } - public Badge WithHeight(ElementHeight value) + public VerticalBarChart WithHeight(ElementHeight value) { this.Height = value; return this; } - public Badge WithHorizontalAlignment(HorizontalAlignment value) + public VerticalBarChart WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public Badge WithSpacing(Spacing value) + public VerticalBarChart WithSpacing(Spacing value) { this.Spacing = value; return this; } - public Badge WithTargetWidth(TargetWidth value) + public VerticalBarChart WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public Badge WithIsSortKey(bool value) + public VerticalBarChart WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public Badge WithText(string value) + public VerticalBarChart WithTitle(string value) { - this.Text = value; + this.Title = value; return this; } - public Badge WithIcon(string value) + public VerticalBarChart WithShowTitle(bool value) { - this.Icon = value; + this.ShowTitle = value; return this; } - public Badge WithIconPosition(BadgeIconPosition value) + public VerticalBarChart WithColorSet(ChartColorSet value) { - this.IconPosition = value; + this.ColorSet = value; return this; } - public Badge WithAppearance(BadgeAppearance value) + public VerticalBarChart WithMaxWidth(string value) { - this.Appearance = value; + this.MaxWidth = value; + return this; + } + + public VerticalBarChart WithShowLegend(bool value) + { + this.ShowLegend = value; + return this; + } + + public VerticalBarChart WithXAxisTitle(string value) + { + this.XAxisTitle = value; + return this; + } + + public VerticalBarChart WithYAxisTitle(string value) + { + this.YAxisTitle = value; + return this; + } + + public VerticalBarChart WithData(params IList value) + { + this.Data = value; + return this; + } + + public VerticalBarChart WithColor(ChartColor value) + { + this.Color = value; + return this; + } + + public VerticalBarChart WithShowBarValues(bool value) + { + this.ShowBarValues = value; + return this; + } + + public VerticalBarChart WithYMin(float value) + { + this.YMin = value; + return this; + } + + public VerticalBarChart WithYMax(float value) + { + this.YMax = value; + return this; + } + + public VerticalBarChart WithGridArea(string value) + { + this.GridArea = value; + return this; + } + + public VerticalBarChart WithFallback(IUnion value) + { + this.Fallback = value; return this; } +} + +/// +/// Represents a data point in a vertical bar chart. +/// +public class VerticalBarChartDataValue : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type VerticalBarChartDataValue. + /// + public static VerticalBarChartDataValue? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The x axis value of the data point. + /// + [JsonPropertyName("x")] + public IUnion? X { get; set; } + + /// + /// The y axis value of the data point. + /// + [JsonPropertyName("y")] + public float? Y { get; set; } = 0; - public Badge WithSize(BadgeSize value) - { - this.Size = value; - return this; - } + /// + /// The color to use for the bar associated with the data point. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// + [JsonPropertyName("color")] + public ChartColor? Color { get; set; } - public Badge WithShape(BadgeShape value) + /// + /// Serializes this VerticalBarChartDataValue into a JSON string. + /// + public string Serialize() { - this.Shape = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public Badge WithStyle(BadgeStyle value) + public VerticalBarChartDataValue WithKey(string value) { - this.Style = value; + this.Key = value; return this; } - public Badge WithTooltip(string value) + public VerticalBarChartDataValue WithX(IUnion value) { - this.Tooltip = value; + this.X = value; return this; } - public Badge WithGridArea(string value) + public VerticalBarChartDataValue WithY(float value) { - this.GridArea = value; + this.Y = value; return this; } - public Badge WithFallback(IUnion value) + public VerticalBarChartDataValue WithColor(ChartColor value) { - this.Fallback = value; + this.Color = value; return this; } } /// -/// A donut chart. +/// A horizontal bar chart. /// -public class DonutChart : CardElement +public class HorizontalBarChart : CardElement { /// - /// Deserializes a JSON string into an object of type DonutChart. + /// Deserializes a JSON string into an object of type HorizontalBarChart. /// - public static DonutChart? Deserialize(string json) + public static HorizontalBarChart? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Chart.Donut**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Chart.HorizontalBar**. /// [JsonPropertyName("type")] - public string Type { get; } = "Chart.Donut"; + public string Type { get; } = "Chart.HorizontalBar"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -10094,7 +12842,7 @@ public class DonutChart : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -10106,19 +12854,19 @@ public class DonutChart : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -10130,7 +12878,7 @@ public class DonutChart : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -10142,7 +12890,7 @@ public class DonutChart : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// /// The title of the chart. @@ -10150,6 +12898,12 @@ public class DonutChart : CardElement [JsonPropertyName("title")] public string? Title { get; set; } + /// + /// Controls whether the chart's title should be displayed. Defaults to `false`. + /// + [JsonPropertyName("showTitle")] + public bool? ShowTitle { get; set; } = false; + /// /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). /// @@ -10157,10 +12911,46 @@ public class DonutChart : CardElement public ChartColorSet? ColorSet { get; set; } /// - /// The data to display in the chart. + /// The maximum width, in pixels, of the chart, in the `px` format. + /// + [JsonPropertyName("maxWidth")] + public string? MaxWidth { get; set; } + + /// + /// Controls whether the chart's legend should be displayed. + /// + [JsonPropertyName("showLegend")] + public bool? ShowLegend { get; set; } = true; + + /// + /// The title of the x axis. + /// + [JsonPropertyName("xAxisTitle")] + public string? XAxisTitle { get; set; } + + /// + /// The title of the y axis. + /// + [JsonPropertyName("yAxisTitle")] + public string? YAxisTitle { get; set; } + + /// + /// The color to use for all data points. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// + [JsonPropertyName("color")] + public ChartColor? Color { get; set; } + + /// + /// The data points in the chart. /// [JsonPropertyName("data")] - public IList? Data { get; set; } + public IList? Data { get; set; } + + /// + /// Controls how the chart should be visually laid out. + /// + [JsonPropertyName("displayMode")] + public HorizontalBarChartDisplayMode? DisplayMode { get; set; } = HorizontalBarChartDisplayMode.AbsoluteWithAxis; /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -10175,7 +12965,7 @@ public class DonutChart : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this DonutChart into a JSON string. + /// Serializes this HorizontalBarChart into a JSON string. /// public string Serialize() { @@ -10189,91 +12979,139 @@ public string Serialize() ); } - public DonutChart WithId(string value) + public HorizontalBarChart WithKey(string value) + { + this.Key = value; + return this; + } + + public HorizontalBarChart WithId(string value) { this.Id = value; return this; } - public DonutChart WithRequires(HostCapabilities value) + public HorizontalBarChart WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public DonutChart WithLang(string value) + public HorizontalBarChart WithLang(string value) { this.Lang = value; return this; } - public DonutChart WithIsVisible(bool value) + public HorizontalBarChart WithIsVisible(bool value) { this.IsVisible = value; return this; } - public DonutChart WithSeparator(bool value) + public HorizontalBarChart WithSeparator(bool value) { this.Separator = value; return this; } - public DonutChart WithHeight(ElementHeight value) + public HorizontalBarChart WithHeight(ElementHeight value) { this.Height = value; return this; } - public DonutChart WithHorizontalAlignment(HorizontalAlignment value) + public HorizontalBarChart WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public DonutChart WithSpacing(Spacing value) + public HorizontalBarChart WithSpacing(Spacing value) { this.Spacing = value; return this; } - public DonutChart WithTargetWidth(TargetWidth value) + public HorizontalBarChart WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public DonutChart WithIsSortKey(bool value) + public HorizontalBarChart WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public DonutChart WithTitle(string value) + public HorizontalBarChart WithTitle(string value) { this.Title = value; return this; } - public DonutChart WithColorSet(ChartColorSet value) + public HorizontalBarChart WithShowTitle(bool value) + { + this.ShowTitle = value; + return this; + } + + public HorizontalBarChart WithColorSet(ChartColorSet value) { this.ColorSet = value; return this; } - public DonutChart WithData(params IList value) + public HorizontalBarChart WithMaxWidth(string value) + { + this.MaxWidth = value; + return this; + } + + public HorizontalBarChart WithShowLegend(bool value) + { + this.ShowLegend = value; + return this; + } + + public HorizontalBarChart WithXAxisTitle(string value) + { + this.XAxisTitle = value; + return this; + } + + public HorizontalBarChart WithYAxisTitle(string value) + { + this.YAxisTitle = value; + return this; + } + + public HorizontalBarChart WithColor(ChartColor value) + { + this.Color = value; + return this; + } + + public HorizontalBarChart WithData(params IList value) { this.Data = value; return this; } - public DonutChart WithGridArea(string value) + public HorizontalBarChart WithDisplayMode(HorizontalBarChartDisplayMode value) + { + this.DisplayMode = value; + return this; + } + + public HorizontalBarChart WithGridArea(string value) { this.GridArea = value; return this; } - public DonutChart WithFallback(IUnion value) + public HorizontalBarChart WithFallback(IUnion value) { this.Fallback = value; return this; @@ -10281,38 +13119,44 @@ public DonutChart WithFallback(IUnion value) } /// -/// A data point in a Donut chart. +/// Represents a single data point in a horizontal bar chart. /// -public class DonutChartData : SerializableObject +public class HorizontalBarChartDataValue : SerializableObject { /// - /// Deserializes a JSON string into an object of type DonutChartData. + /// Deserializes a JSON string into an object of type HorizontalBarChartDataValue. /// - public static DonutChartData? Deserialize(string json) + public static HorizontalBarChartDataValue? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The legend of the chart. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("legend")] - public string? Legend { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The value associated with the data point. + /// The x axis value of the data point. /// - [JsonPropertyName("value")] - public float? Value { get; set; } + [JsonPropertyName("x")] + public string? X { get; set; } /// - /// The color to use for the data point. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// The y axis value of the data point. + /// + [JsonPropertyName("y")] + public float? Y { get; set; } = 0; + + /// + /// The color of the bar associated with the data point. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). /// [JsonPropertyName("color")] public ChartColor? Color { get; set; } /// - /// Serializes this DonutChartData into a JSON string. + /// Serializes this HorizontalBarChartDataValue into a JSON string. /// public string Serialize() { @@ -10326,19 +13170,25 @@ public string Serialize() ); } - public DonutChartData WithLegend(string value) + public HorizontalBarChartDataValue WithKey(string value) { - this.Legend = value; + this.Key = value; return this; } - public DonutChartData WithValue(float value) + public HorizontalBarChartDataValue WithX(string value) { - this.Value = value; + this.X = value; return this; } - public DonutChartData WithColor(ChartColor value) + public HorizontalBarChartDataValue WithY(float value) + { + this.Y = value; + return this; + } + + public HorizontalBarChartDataValue WithColor(ChartColor value) { this.Color = value; return this; @@ -10346,23 +13196,29 @@ public DonutChartData WithColor(ChartColor value) } /// -/// A pie chart. +/// A stacked horizontal bar chart. /// -public class PieChart : CardElement +public class StackedHorizontalBarChart : CardElement { /// - /// Deserializes a JSON string into an object of type PieChart. + /// Deserializes a JSON string into an object of type StackedHorizontalBarChart. /// - public static PieChart? Deserialize(string json) + public static StackedHorizontalBarChart? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Chart.Pie**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Chart.HorizontalBar.Stacked**. /// [JsonPropertyName("type")] - public string Type { get; } = "Chart.Pie"; + public string Type { get; } = "Chart.HorizontalBar.Stacked"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -10374,7 +13230,7 @@ public class PieChart : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -10386,19 +13242,19 @@ public class PieChart : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -10410,7 +13266,7 @@ public class PieChart : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -10422,25 +13278,61 @@ public class PieChart : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// /// The title of the chart. /// - [JsonPropertyName("title")] - public string? Title { get; set; } + [JsonPropertyName("title")] + public string? Title { get; set; } + + /// + /// Controls whether the chart's title should be displayed. Defaults to `false`. + /// + [JsonPropertyName("showTitle")] + public bool? ShowTitle { get; set; } = false; + + /// + /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// + [JsonPropertyName("colorSet")] + public ChartColorSet? ColorSet { get; set; } + + /// + /// The maximum width, in pixels, of the chart, in the `px` format. + /// + [JsonPropertyName("maxWidth")] + public string? MaxWidth { get; set; } + + /// + /// Controls whether the chart's legend should be displayed. + /// + [JsonPropertyName("showLegend")] + public bool? ShowLegend { get; set; } = true; + + /// + /// The title of the x axis. + /// + [JsonPropertyName("xAxisTitle")] + public string? XAxisTitle { get; set; } + + /// + /// The title of the y axis. + /// + [JsonPropertyName("yAxisTitle")] + public string? YAxisTitle { get; set; } /// - /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// The color to use for all data points. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). /// - [JsonPropertyName("colorSet")] - public ChartColorSet? ColorSet { get; set; } + [JsonPropertyName("color")] + public ChartColor? Color { get; set; } /// /// The data to display in the chart. /// [JsonPropertyName("data")] - public IList? Data { get; set; } + public IList? Data { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -10455,7 +13347,7 @@ public class PieChart : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this PieChart into a JSON string. + /// Serializes this StackedHorizontalBarChart into a JSON string. /// public string Serialize() { @@ -10469,91 +13361,133 @@ public string Serialize() ); } - public PieChart WithId(string value) + public StackedHorizontalBarChart WithKey(string value) + { + this.Key = value; + return this; + } + + public StackedHorizontalBarChart WithId(string value) { this.Id = value; return this; } - public PieChart WithRequires(HostCapabilities value) + public StackedHorizontalBarChart WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public PieChart WithLang(string value) + public StackedHorizontalBarChart WithLang(string value) { this.Lang = value; return this; } - public PieChart WithIsVisible(bool value) + public StackedHorizontalBarChart WithIsVisible(bool value) { this.IsVisible = value; return this; } - public PieChart WithSeparator(bool value) + public StackedHorizontalBarChart WithSeparator(bool value) { this.Separator = value; return this; } - public PieChart WithHeight(ElementHeight value) + public StackedHorizontalBarChart WithHeight(ElementHeight value) { this.Height = value; return this; } - public PieChart WithHorizontalAlignment(HorizontalAlignment value) + public StackedHorizontalBarChart WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public PieChart WithSpacing(Spacing value) + public StackedHorizontalBarChart WithSpacing(Spacing value) { this.Spacing = value; return this; } - public PieChart WithTargetWidth(TargetWidth value) + public StackedHorizontalBarChart WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public PieChart WithIsSortKey(bool value) + public StackedHorizontalBarChart WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public PieChart WithTitle(string value) + public StackedHorizontalBarChart WithTitle(string value) { this.Title = value; return this; } - public PieChart WithColorSet(ChartColorSet value) + public StackedHorizontalBarChart WithShowTitle(bool value) + { + this.ShowTitle = value; + return this; + } + + public StackedHorizontalBarChart WithColorSet(ChartColorSet value) { this.ColorSet = value; return this; } - public PieChart WithData(params IList value) + public StackedHorizontalBarChart WithMaxWidth(string value) + { + this.MaxWidth = value; + return this; + } + + public StackedHorizontalBarChart WithShowLegend(bool value) + { + this.ShowLegend = value; + return this; + } + + public StackedHorizontalBarChart WithXAxisTitle(string value) + { + this.XAxisTitle = value; + return this; + } + + public StackedHorizontalBarChart WithYAxisTitle(string value) + { + this.YAxisTitle = value; + return this; + } + + public StackedHorizontalBarChart WithColor(ChartColor value) + { + this.Color = value; + return this; + } + + public StackedHorizontalBarChart WithData(params IList value) { this.Data = value; return this; } - public PieChart WithGridArea(string value) + public StackedHorizontalBarChart WithGridArea(string value) { this.GridArea = value; return this; } - public PieChart WithFallback(IUnion value) + public StackedHorizontalBarChart WithFallback(IUnion value) { this.Fallback = value; return this; @@ -10561,23 +13495,171 @@ public PieChart WithFallback(IUnion value) } /// -/// A grouped vertical bar chart. +/// Defines the collection of data series to display in as a stacked horizontal bar chart. /// -public class GroupedVerticalBarChart : CardElement +public class StackedHorizontalBarChartData : SerializableObject { /// - /// Deserializes a JSON string into an object of type GroupedVerticalBarChart. + /// Deserializes a JSON string into an object of type StackedHorizontalBarChartData. /// - public static GroupedVerticalBarChart? Deserialize(string json) + public static StackedHorizontalBarChartData? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Chart.VerticalBar.Grouped**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The title of the series. + /// + [JsonPropertyName("title")] + public string? Title { get; set; } + + /// + /// The data points in the series. + /// + [JsonPropertyName("data")] + public IList? Data { get; set; } + + /// + /// Serializes this StackedHorizontalBarChartData into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public StackedHorizontalBarChartData WithKey(string value) + { + this.Key = value; + return this; + } + + public StackedHorizontalBarChartData WithTitle(string value) + { + this.Title = value; + return this; + } + + public StackedHorizontalBarChartData WithData(params IList value) + { + this.Data = value; + return this; + } +} + +/// +/// A data point in a series. +/// +public class StackedHorizontalBarChartDataPoint : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type StackedHorizontalBarChartDataPoint. + /// + public static StackedHorizontalBarChartDataPoint? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The legend associated with the data point. + /// + [JsonPropertyName("legend")] + public string? Legend { get; set; } + + /// + /// The value of the data point. + /// + [JsonPropertyName("value")] + public float? Value { get; set; } = 0; + + /// + /// The color to use to render the bar associated with the data point. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// + [JsonPropertyName("color")] + public ChartColor? Color { get; set; } + + /// + /// Serializes this StackedHorizontalBarChartDataPoint into a JSON string. + /// + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } + + public StackedHorizontalBarChartDataPoint WithKey(string value) + { + this.Key = value; + return this; + } + + public StackedHorizontalBarChartDataPoint WithLegend(string value) + { + this.Legend = value; + return this; + } + + public StackedHorizontalBarChartDataPoint WithValue(float value) + { + this.Value = value; + return this; + } + + public StackedHorizontalBarChartDataPoint WithColor(ChartColor value) + { + this.Color = value; + return this; + } +} + +/// +/// A line chart. +/// +public class LineChart : CardElement +{ + /// + /// Deserializes a JSON string into an object of type LineChart. + /// + public static LineChart? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } + + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Chart.Line**. /// [JsonPropertyName("type")] - public string Type { get; } = "Chart.VerticalBar.Grouped"; + public string Type { get; } = "Chart.Line"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -10589,7 +13671,7 @@ public class GroupedVerticalBarChart : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -10601,19 +13683,19 @@ public class GroupedVerticalBarChart : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -10625,7 +13707,7 @@ public class GroupedVerticalBarChart : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -10637,7 +13719,7 @@ public class GroupedVerticalBarChart : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// /// The title of the chart. @@ -10645,12 +13727,30 @@ public class GroupedVerticalBarChart : CardElement [JsonPropertyName("title")] public string? Title { get; set; } + /// + /// Controls whether the chart's title should be displayed. Defaults to `false`. + /// + [JsonPropertyName("showTitle")] + public bool? ShowTitle { get; set; } = false; + /// /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). /// [JsonPropertyName("colorSet")] public ChartColorSet? ColorSet { get; set; } + /// + /// The maximum width, in pixels, of the chart, in the `px` format. + /// + [JsonPropertyName("maxWidth")] + public string? MaxWidth { get; set; } + + /// + /// Controls whether the chart's legend should be displayed. + /// + [JsonPropertyName("showLegend")] + public bool? ShowLegend { get; set; } = true; + /// /// The title of the x axis. /// @@ -10670,37 +13770,19 @@ public class GroupedVerticalBarChart : CardElement public ChartColor? Color { get; set; } /// - /// Controls if bars in the chart should be displayed as stacks instead of groups. - /// - /// **Note:** stacked vertical bar charts do not support custom Y ranges nor negative Y values. - /// - [JsonPropertyName("stacked")] - public bool? Stacked { get; set; } - - /// - /// The data points in a series. + /// The data point series in the line chart. /// [JsonPropertyName("data")] - public IList? Data { get; set; } - - /// - /// Controls if values should be displayed on each bar. - /// - [JsonPropertyName("showBarValues")] - public bool? ShowBarValues { get; set; } + public IList? Data { get; set; } /// - /// The requested minimum for the Y axis range. The value used at runtime may be different to optimize visual presentation. - /// - /// `yMin` is ignored if `stacked` is set to `true`. + /// The maximum y range. /// [JsonPropertyName("yMin")] public float? YMin { get; set; } /// - /// The requested maximum for the Y axis range. The value used at runtime may be different to optimize visual presentation. - /// - /// `yMax` is ignored if `stacked` is set to `true`. + /// The minimum y range. /// [JsonPropertyName("yMax")] public float? YMax { get; set; } @@ -10718,7 +13800,7 @@ public class GroupedVerticalBarChart : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this GroupedVerticalBarChart into a JSON string. + /// Serializes this LineChart into a JSON string. /// public string Serialize() { @@ -10732,133 +13814,145 @@ public string Serialize() ); } - public GroupedVerticalBarChart WithId(string value) + public LineChart WithKey(string value) + { + this.Key = value; + return this; + } + + public LineChart WithId(string value) { this.Id = value; return this; } - public GroupedVerticalBarChart WithRequires(HostCapabilities value) + public LineChart WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public GroupedVerticalBarChart WithLang(string value) + public LineChart WithLang(string value) { this.Lang = value; return this; } - public GroupedVerticalBarChart WithIsVisible(bool value) + public LineChart WithIsVisible(bool value) { this.IsVisible = value; return this; } - public GroupedVerticalBarChart WithSeparator(bool value) + public LineChart WithSeparator(bool value) { this.Separator = value; return this; } - public GroupedVerticalBarChart WithHeight(ElementHeight value) + public LineChart WithHeight(ElementHeight value) { this.Height = value; return this; } - public GroupedVerticalBarChart WithHorizontalAlignment(HorizontalAlignment value) + public LineChart WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public GroupedVerticalBarChart WithSpacing(Spacing value) + public LineChart WithSpacing(Spacing value) { this.Spacing = value; return this; } - public GroupedVerticalBarChart WithTargetWidth(TargetWidth value) + public LineChart WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public GroupedVerticalBarChart WithIsSortKey(bool value) + public LineChart WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public GroupedVerticalBarChart WithTitle(string value) + public LineChart WithTitle(string value) { this.Title = value; return this; } - public GroupedVerticalBarChart WithColorSet(ChartColorSet value) + public LineChart WithShowTitle(bool value) + { + this.ShowTitle = value; + return this; + } + + public LineChart WithColorSet(ChartColorSet value) { this.ColorSet = value; return this; } - public GroupedVerticalBarChart WithXAxisTitle(string value) + public LineChart WithMaxWidth(string value) { - this.XAxisTitle = value; + this.MaxWidth = value; return this; } - public GroupedVerticalBarChart WithYAxisTitle(string value) + public LineChart WithShowLegend(bool value) { - this.YAxisTitle = value; + this.ShowLegend = value; return this; } - public GroupedVerticalBarChart WithColor(ChartColor value) + public LineChart WithXAxisTitle(string value) { - this.Color = value; + this.XAxisTitle = value; return this; } - public GroupedVerticalBarChart WithStacked(bool value) + public LineChart WithYAxisTitle(string value) { - this.Stacked = value; + this.YAxisTitle = value; return this; } - public GroupedVerticalBarChart WithData(params IList value) + public LineChart WithColor(ChartColor value) { - this.Data = value; + this.Color = value; return this; } - public GroupedVerticalBarChart WithShowBarValues(bool value) + public LineChart WithData(params IList value) { - this.ShowBarValues = value; + this.Data = value; return this; } - public GroupedVerticalBarChart WithYMin(float value) + public LineChart WithYMin(float value) { this.YMin = value; return this; } - public GroupedVerticalBarChart WithYMax(float value) + public LineChart WithYMax(float value) { this.YMax = value; return this; } - public GroupedVerticalBarChart WithGridArea(string value) + public LineChart WithGridArea(string value) { this.GridArea = value; return this; } - public GroupedVerticalBarChart WithFallback(IUnion value) + public LineChart WithFallback(IUnion value) { this.Fallback = value; return this; @@ -10866,18 +13960,24 @@ public GroupedVerticalBarChart WithFallback(IUnion } /// -/// Represents a series of data points. +/// Represents a collection of data points series in a line chart. /// -public class GroupedVerticalBarChartData : SerializableObject +public class LineChartData : SerializableObject { /// - /// Deserializes a JSON string into an object of type GroupedVerticalBarChartData. + /// Deserializes a JSON string into an object of type LineChartData. /// - public static GroupedVerticalBarChartData? Deserialize(string json) + public static LineChartData? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + /// /// The legend of the chart. /// @@ -10888,16 +13988,16 @@ public class GroupedVerticalBarChartData : SerializableObject /// The data points in the series. /// [JsonPropertyName("values")] - public IList? Values { get; set; } + public IList? Values { get; set; } /// - /// The color to use for all data points in the series. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// The color all data points in the series. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). /// [JsonPropertyName("color")] public ChartColor? Color { get; set; } /// - /// Serializes this GroupedVerticalBarChartData into a JSON string. + /// Serializes this LineChartData into a JSON string. /// public string Serialize() { @@ -10911,19 +14011,25 @@ public string Serialize() ); } - public GroupedVerticalBarChartData WithLegend(string value) + public LineChartData WithKey(string value) + { + this.Key = value; + return this; + } + + public LineChartData WithLegend(string value) { this.Legend = value; return this; } - public GroupedVerticalBarChartData WithValues(params IList value) + public LineChartData WithValues(params IList value) { this.Values = value; return this; } - public GroupedVerticalBarChartData WithColor(ChartColor value) + public LineChartData WithColor(ChartColor value) { this.Color = value; return this; @@ -10931,32 +14037,42 @@ public GroupedVerticalBarChartData WithColor(ChartColor value) } /// -/// A single data point in a bar chart. +/// Represents a single data point in a line chart. /// -public class BarChartDataValue : SerializableObject +public class LineChartValue : SerializableObject { /// - /// Deserializes a JSON string into an object of type BarChartDataValue. + /// Deserializes a JSON string into an object of type LineChartValue. /// - public static BarChartDataValue? Deserialize(string json) + public static LineChartValue? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + /// /// The x axis value of the data point. + /// + /// If all x values of the x [Chart.Line](https://adaptivecards.microsoft.com/?topic=Chart.Line) are expressed as a number, or if all x values are expressed as a date string in the `YYYY-MM-DD` format, the chart will be rendered as a time series chart, i.e. x axis values will span across the minimum x value to maximum x value range. + /// + /// Otherwise, if x values are represented as a mix of numbers and strings or if at least one x value isn't in the `YYYY-MM-DD` format, the chart will be rendered as a categorical chart, i.e. x axis values will be displayed as categories. /// [JsonPropertyName("x")] - public string? X { get; set; } + public IUnion? X { get; set; } /// /// The y axis value of the data point. /// [JsonPropertyName("y")] - public float? Y { get; set; } + public float? Y { get; set; } = 0; /// - /// Serializes this BarChartDataValue into a JSON string. + /// Serializes this LineChartValue into a JSON string. /// public string Serialize() { @@ -10970,13 +14086,19 @@ public string Serialize() ); } - public BarChartDataValue WithX(string value) + public LineChartValue WithKey(string value) + { + this.Key = value; + return this; + } + + public LineChartValue WithX(IUnion value) { this.X = value; return this; } - public BarChartDataValue WithY(float value) + public LineChartValue WithY(float value) { this.Y = value; return this; @@ -10984,23 +14106,29 @@ public BarChartDataValue WithY(float value) } /// -/// A vertical bar chart. +/// A gauge chart. /// -public class VerticalBarChart : CardElement +public class GaugeChart : CardElement { /// - /// Deserializes a JSON string into an object of type VerticalBarChart. + /// Deserializes a JSON string into an object of type GaugeChart. /// - public static VerticalBarChart? Deserialize(string json) + public static GaugeChart? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Chart.VerticalBar**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Chart.Gauge**. /// [JsonPropertyName("type")] - public string Type { get; } = "Chart.VerticalBar"; + public string Type { get; } = "Chart.Gauge"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -11012,7 +14140,7 @@ public class VerticalBarChart : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -11024,19 +14152,19 @@ public class VerticalBarChart : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -11048,7 +14176,7 @@ public class VerticalBarChart : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -11060,7 +14188,7 @@ public class VerticalBarChart : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// /// The title of the chart. @@ -11068,6 +14196,12 @@ public class VerticalBarChart : CardElement [JsonPropertyName("title")] public string? Title { get; set; } + /// + /// Controls whether the chart's title should be displayed. Defaults to `false`. + /// + [JsonPropertyName("showTitle")] + public bool? ShowTitle { get; set; } = false; + /// /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). /// @@ -11075,46 +14209,70 @@ public class VerticalBarChart : CardElement public ChartColorSet? ColorSet { get; set; } /// - /// The title of the x axis. + /// The maximum width, in pixels, of the chart, in the `px` format. /// - [JsonPropertyName("xAxisTitle")] - public string? XAxisTitle { get; set; } + [JsonPropertyName("maxWidth")] + public string? MaxWidth { get; set; } /// - /// The title of the y axis. + /// Controls whether the chart's legend should be displayed. /// - [JsonPropertyName("yAxisTitle")] - public string? YAxisTitle { get; set; } + [JsonPropertyName("showLegend")] + public bool? ShowLegend { get; set; } = true; /// - /// The data to display in the chart. + /// The minimum value of the gauge. /// - [JsonPropertyName("data")] - public IList? Data { get; set; } + [JsonPropertyName("min")] + public float? Min { get; set; } = 0; /// - /// The color to use for all data points. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// The maximum value of the gauge. /// - [JsonPropertyName("color")] - public ChartColor? Color { get; set; } + [JsonPropertyName("max")] + public float? Max { get; set; } /// - /// Controls if the bar values should be displayed. + /// The sub-label of the gauge. /// - [JsonPropertyName("showBarValues")] - public bool? ShowBarValues { get; set; } + [JsonPropertyName("subLabel")] + public string? SubLabel { get; set; } /// - /// The requested minimum for the Y axis range. The value used at runtime may be different to optimize visual presentation. + /// Controls whether the min/max values should be displayed. /// - [JsonPropertyName("yMin")] - public float? YMin { get; set; } + [JsonPropertyName("showMinMax")] + public bool? ShowMinMax { get; set; } = true; /// - /// The requested maximum for the Y axis range. The value used at runtime may be different to optimize visual presentation. + /// Controls whether the gauge's needle is displayed. Default is **true**. /// - [JsonPropertyName("yMax")] - public float? YMax { get; set; } + [JsonPropertyName("showNeedle")] + public bool? ShowNeedle { get; set; } = true; + + /// + /// Controls whether the outlines of the gauge segments are displayed. + /// + [JsonPropertyName("showOutlines")] + public bool? ShowOutlines { get; set; } = true; + + /// + /// The segments to display in the gauge. + /// + [JsonPropertyName("segments")] + public IList? Segments { get; set; } + + /// + /// The value of the gauge. + /// + [JsonPropertyName("value")] + public float? Value { get; set; } = 0; + + /// + /// The format used to display the gauge's value. + /// + [JsonPropertyName("valueFormat")] + public GaugeChartValueFormat? ValueFormat { get; set; } = GaugeChartValueFormat.Percentage; /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -11129,7 +14287,7 @@ public class VerticalBarChart : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this VerticalBarChart into a JSON string. + /// Serializes this GaugeChart into a JSON string. /// public string Serialize() { @@ -11143,127 +14301,163 @@ public string Serialize() ); } - public VerticalBarChart WithId(string value) + public GaugeChart WithKey(string value) + { + this.Key = value; + return this; + } + + public GaugeChart WithId(string value) { this.Id = value; return this; } - public VerticalBarChart WithRequires(HostCapabilities value) + public GaugeChart WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public VerticalBarChart WithLang(string value) + public GaugeChart WithLang(string value) { this.Lang = value; return this; } - public VerticalBarChart WithIsVisible(bool value) + public GaugeChart WithIsVisible(bool value) { this.IsVisible = value; return this; } - public VerticalBarChart WithSeparator(bool value) + public GaugeChart WithSeparator(bool value) { this.Separator = value; return this; } - public VerticalBarChart WithHeight(ElementHeight value) + public GaugeChart WithHeight(ElementHeight value) { this.Height = value; return this; } - public VerticalBarChart WithHorizontalAlignment(HorizontalAlignment value) + public GaugeChart WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public VerticalBarChart WithSpacing(Spacing value) + public GaugeChart WithSpacing(Spacing value) { this.Spacing = value; return this; } - public VerticalBarChart WithTargetWidth(TargetWidth value) + public GaugeChart WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public VerticalBarChart WithIsSortKey(bool value) + public GaugeChart WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public VerticalBarChart WithTitle(string value) + public GaugeChart WithTitle(string value) { this.Title = value; return this; } - public VerticalBarChart WithColorSet(ChartColorSet value) + public GaugeChart WithShowTitle(bool value) + { + this.ShowTitle = value; + return this; + } + + public GaugeChart WithColorSet(ChartColorSet value) { this.ColorSet = value; return this; } - public VerticalBarChart WithXAxisTitle(string value) + public GaugeChart WithMaxWidth(string value) { - this.XAxisTitle = value; + this.MaxWidth = value; return this; } - public VerticalBarChart WithYAxisTitle(string value) + public GaugeChart WithShowLegend(bool value) { - this.YAxisTitle = value; + this.ShowLegend = value; + return this; + } + + public GaugeChart WithMin(float value) + { + this.Min = value; + return this; + } + + public GaugeChart WithMax(float value) + { + this.Max = value; + return this; + } + + public GaugeChart WithSubLabel(string value) + { + this.SubLabel = value; + return this; + } + + public GaugeChart WithShowMinMax(bool value) + { + this.ShowMinMax = value; return this; } - public VerticalBarChart WithData(params IList value) + public GaugeChart WithShowNeedle(bool value) { - this.Data = value; + this.ShowNeedle = value; return this; } - public VerticalBarChart WithColor(ChartColor value) + public GaugeChart WithShowOutlines(bool value) { - this.Color = value; + this.ShowOutlines = value; return this; } - public VerticalBarChart WithShowBarValues(bool value) + public GaugeChart WithSegments(params IList value) { - this.ShowBarValues = value; + this.Segments = value; return this; } - public VerticalBarChart WithYMin(float value) + public GaugeChart WithValue(float value) { - this.YMin = value; + this.Value = value; return this; } - public VerticalBarChart WithYMax(float value) + public GaugeChart WithValueFormat(GaugeChartValueFormat value) { - this.YMax = value; + this.ValueFormat = value; return this; } - public VerticalBarChart WithGridArea(string value) + public GaugeChart WithGridArea(string value) { this.GridArea = value; return this; } - public VerticalBarChart WithFallback(IUnion value) + public GaugeChart WithFallback(IUnion value) { this.Fallback = value; return this; @@ -11271,38 +14465,44 @@ public VerticalBarChart WithFallback(IUnion value) } /// -/// Represents a data point in a vertical bar chart. +/// The legend of the chart. /// -public class VerticalBarChartDataValue : SerializableObject +public class GaugeChartLegend : SerializableObject { /// - /// Deserializes a JSON string into an object of type VerticalBarChartDataValue. + /// Deserializes a JSON string into an object of type GaugeChartLegend. /// - public static VerticalBarChartDataValue? Deserialize(string json) + public static GaugeChartLegend? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The x axis value of the data point. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("x")] - public IUnion? X { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The y axis value of the data point. + /// The size of the segment. /// - [JsonPropertyName("y")] - public float? Y { get; set; } + [JsonPropertyName("size")] + public float? Size { get; set; } = 0; /// - /// The color to use for the bar associated with the data point. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// The legend text associated with the segment. + /// + [JsonPropertyName("legend")] + public string? Legend { get; set; } + + /// + /// The color to use for the segment. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). /// [JsonPropertyName("color")] public ChartColor? Color { get; set; } /// - /// Serializes this VerticalBarChartDataValue into a JSON string. + /// Serializes this GaugeChartLegend into a JSON string. /// public string Serialize() { @@ -11316,19 +14516,25 @@ public string Serialize() ); } - public VerticalBarChartDataValue WithX(IUnion value) + public GaugeChartLegend WithKey(string value) { - this.X = value; + this.Key = value; return this; } - public VerticalBarChartDataValue WithY(float value) + public GaugeChartLegend WithSize(float value) { - this.Y = value; + this.Size = value; return this; } - public VerticalBarChartDataValue WithColor(ChartColor value) + public GaugeChartLegend WithLegend(string value) + { + this.Legend = value; + return this; + } + + public GaugeChartLegend WithColor(ChartColor value) { this.Color = value; return this; @@ -11336,23 +14542,29 @@ public VerticalBarChartDataValue WithColor(ChartColor value) } /// -/// A horizontal bar chart. +/// A formatted and syntax-colored code block. /// -public class HorizontalBarChart : CardElement +public class CodeBlock : CardElement { /// - /// Deserializes a JSON string into an object of type HorizontalBarChart. + /// Deserializes a JSON string into an object of type CodeBlock. /// - public static HorizontalBarChart? Deserialize(string json) + public static CodeBlock? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Chart.HorizontalBar**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **CodeBlock**. /// [JsonPropertyName("type")] - public string Type { get; } = "Chart.HorizontalBar"; + public string Type { get; } = "CodeBlock"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -11364,7 +14576,7 @@ public class HorizontalBarChart : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -11376,19 +14588,19 @@ public class HorizontalBarChart : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -11400,7 +14612,7 @@ public class HorizontalBarChart : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -11412,49 +14624,25 @@ public class HorizontalBarChart : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The title of the chart. - /// - [JsonPropertyName("title")] - public string? Title { get; set; } - - /// - /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). - /// - [JsonPropertyName("colorSet")] - public ChartColorSet? ColorSet { get; set; } - - /// - /// The title of the x axis. - /// - [JsonPropertyName("xAxisTitle")] - public string? XAxisTitle { get; set; } - - /// - /// The title of the y axis. - /// - [JsonPropertyName("yAxisTitle")] - public string? YAxisTitle { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The color to use for all data points. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// The code snippet to display. /// - [JsonPropertyName("color")] - public ChartColor? Color { get; set; } + [JsonPropertyName("codeSnippet")] + public string? CodeSnippet { get; set; } /// - /// The data points in the chart. + /// The language the code snippet is expressed in. /// - [JsonPropertyName("data")] - public IList? Data { get; set; } + [JsonPropertyName("language")] + public CodeLanguage? Language { get; set; } = CodeLanguage.PlainText; /// - /// Controls how the chart should be visually laid out. + /// A number that represents the line in the file from where the code snippet was extracted. /// - [JsonPropertyName("displayMode")] - public HorizontalBarChartDisplayMode? DisplayMode { get; set; } + [JsonPropertyName("startLineNumber")] + public float? StartLineNumber { get; set; } = 1; /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -11469,7 +14657,7 @@ public class HorizontalBarChart : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this HorizontalBarChart into a JSON string. + /// Serializes this CodeBlock into a JSON string. /// public string Serialize() { @@ -11483,115 +14671,97 @@ public string Serialize() ); } - public HorizontalBarChart WithId(string value) + public CodeBlock WithKey(string value) + { + this.Key = value; + return this; + } + + public CodeBlock WithId(string value) { this.Id = value; return this; } - public HorizontalBarChart WithRequires(HostCapabilities value) + public CodeBlock WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public HorizontalBarChart WithLang(string value) + public CodeBlock WithLang(string value) { this.Lang = value; return this; } - public HorizontalBarChart WithIsVisible(bool value) + public CodeBlock WithIsVisible(bool value) { this.IsVisible = value; return this; } - public HorizontalBarChart WithSeparator(bool value) + public CodeBlock WithSeparator(bool value) { this.Separator = value; return this; } - public HorizontalBarChart WithHeight(ElementHeight value) + public CodeBlock WithHeight(ElementHeight value) { this.Height = value; return this; } - public HorizontalBarChart WithHorizontalAlignment(HorizontalAlignment value) + public CodeBlock WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public HorizontalBarChart WithSpacing(Spacing value) + public CodeBlock WithSpacing(Spacing value) { this.Spacing = value; return this; } - public HorizontalBarChart WithTargetWidth(TargetWidth value) + public CodeBlock WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public HorizontalBarChart WithIsSortKey(bool value) + public CodeBlock WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public HorizontalBarChart WithTitle(string value) - { - this.Title = value; - return this; - } - - public HorizontalBarChart WithColorSet(ChartColorSet value) - { - this.ColorSet = value; - return this; - } - - public HorizontalBarChart WithXAxisTitle(string value) - { - this.XAxisTitle = value; - return this; - } - - public HorizontalBarChart WithYAxisTitle(string value) - { - this.YAxisTitle = value; - return this; - } - - public HorizontalBarChart WithColor(ChartColor value) + public CodeBlock WithCodeSnippet(string value) { - this.Color = value; + this.CodeSnippet = value; return this; } - public HorizontalBarChart WithData(params IList value) + public CodeBlock WithLanguage(CodeLanguage value) { - this.Data = value; + this.Language = value; return this; } - public HorizontalBarChart WithDisplayMode(HorizontalBarChartDisplayMode value) + public CodeBlock WithStartLineNumber(float value) { - this.DisplayMode = value; + this.StartLineNumber = value; return this; } - public HorizontalBarChart WithGridArea(string value) + public CodeBlock WithGridArea(string value) { this.GridArea = value; return this; } - public HorizontalBarChart WithFallback(IUnion value) + public CodeBlock WithFallback(IUnion value) { this.Fallback = value; return this; @@ -11599,88 +14769,29 @@ public HorizontalBarChart WithFallback(IUnion valu } /// -/// Represents a single data point in a horizontal bar chart. +/// Displays a user's information, including their profile picture. /// -public class HorizontalBarChartDataValue : SerializableObject +public class ComUserMicrosoftGraphComponent : CardElement { /// - /// Deserializes a JSON string into an object of type HorizontalBarChartDataValue. - /// - public static HorizontalBarChartDataValue? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } - - /// - /// The x axis value of the data point. - /// - [JsonPropertyName("x")] - public string? X { get; set; } - - /// - /// The y axis value of the data point. - /// - [JsonPropertyName("y")] - public float? Y { get; set; } - - /// - /// The color of the bar associated with the data point. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). - /// - [JsonPropertyName("color")] - public ChartColor? Color { get; set; } - - /// - /// Serializes this HorizontalBarChartDataValue into a JSON string. + /// Deserializes a JSON string into an object of type ComUserMicrosoftGraphComponent. /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } - - public HorizontalBarChartDataValue WithX(string value) - { - this.X = value; - return this; - } - - public HorizontalBarChartDataValue WithY(float value) - { - this.Y = value; - return this; - } - - public HorizontalBarChartDataValue WithColor(ChartColor value) + public static ComUserMicrosoftGraphComponent? Deserialize(string json) { - this.Color = value; - return this; + return JsonSerializer.Deserialize(json); } -} -/// -/// A stacked horizontal bar chart. -/// -public class StackedHorizontalBarChart : CardElement -{ /// - /// Deserializes a JSON string into an object of type StackedHorizontalBarChart. - /// - public static StackedHorizontalBarChart? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// Must be **Chart.HorizontalBar.Stacked**. + /// Must be **Component**. /// [JsonPropertyName("type")] - public string Type { get; } = "Chart.HorizontalBar.Stacked"; + public string Type { get; } = "Component"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -11692,7 +14803,7 @@ public class StackedHorizontalBarChart : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -11704,19 +14815,19 @@ public class StackedHorizontalBarChart : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -11728,7 +14839,7 @@ public class StackedHorizontalBarChart : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -11740,43 +14851,19 @@ public class StackedHorizontalBarChart : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The title of the chart. - /// - [JsonPropertyName("title")] - public string? Title { get; set; } - - /// - /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). - /// - [JsonPropertyName("colorSet")] - public ChartColorSet? ColorSet { get; set; } - - /// - /// The title of the x axis. - /// - [JsonPropertyName("xAxisTitle")] - public string? XAxisTitle { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The title of the y axis. - /// - [JsonPropertyName("yAxisTitle")] - public string? YAxisTitle { get; set; } - - /// - /// The color to use for all data points. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// Must be **graph.microsoft.com/user**. /// - [JsonPropertyName("color")] - public ChartColor? Color { get; set; } + [JsonPropertyName("name")] + public string Name { get; } = "graph.microsoft.com/user"; /// - /// The data to display in the chart. + /// The properties of the Persona component. /// - [JsonPropertyName("data")] - public IList? Data { get; set; } + [JsonPropertyName("properties")] + public PersonaProperties? Properties { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -11791,7 +14878,7 @@ public class StackedHorizontalBarChart : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this StackedHorizontalBarChart into a JSON string. + /// Serializes this ComUserMicrosoftGraphComponent into a JSON string. /// public string Serialize() { @@ -11805,109 +14892,85 @@ public string Serialize() ); } - public StackedHorizontalBarChart WithId(string value) + public ComUserMicrosoftGraphComponent WithKey(string value) + { + this.Key = value; + return this; + } + + public ComUserMicrosoftGraphComponent WithId(string value) { this.Id = value; return this; } - public StackedHorizontalBarChart WithRequires(HostCapabilities value) + public ComUserMicrosoftGraphComponent WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public StackedHorizontalBarChart WithLang(string value) + public ComUserMicrosoftGraphComponent WithLang(string value) { this.Lang = value; return this; } - public StackedHorizontalBarChart WithIsVisible(bool value) + public ComUserMicrosoftGraphComponent WithIsVisible(bool value) { this.IsVisible = value; return this; } - public StackedHorizontalBarChart WithSeparator(bool value) + public ComUserMicrosoftGraphComponent WithSeparator(bool value) { this.Separator = value; return this; } - public StackedHorizontalBarChart WithHeight(ElementHeight value) + public ComUserMicrosoftGraphComponent WithHeight(ElementHeight value) { this.Height = value; return this; } - public StackedHorizontalBarChart WithHorizontalAlignment(HorizontalAlignment value) + public ComUserMicrosoftGraphComponent WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public StackedHorizontalBarChart WithSpacing(Spacing value) + public ComUserMicrosoftGraphComponent WithSpacing(Spacing value) { this.Spacing = value; return this; } - public StackedHorizontalBarChart WithTargetWidth(TargetWidth value) + public ComUserMicrosoftGraphComponent WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public StackedHorizontalBarChart WithIsSortKey(bool value) + public ComUserMicrosoftGraphComponent WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public StackedHorizontalBarChart WithTitle(string value) - { - this.Title = value; - return this; - } - - public StackedHorizontalBarChart WithColorSet(ChartColorSet value) - { - this.ColorSet = value; - return this; - } - - public StackedHorizontalBarChart WithXAxisTitle(string value) - { - this.XAxisTitle = value; - return this; - } - - public StackedHorizontalBarChart WithYAxisTitle(string value) - { - this.YAxisTitle = value; - return this; - } - - public StackedHorizontalBarChart WithColor(ChartColor value) - { - this.Color = value; - return this; - } - - public StackedHorizontalBarChart WithData(params IList value) + public ComUserMicrosoftGraphComponent WithProperties(PersonaProperties value) { - this.Data = value; + this.Properties = value; return this; } - public StackedHorizontalBarChart WithGridArea(string value) + public ComUserMicrosoftGraphComponent WithGridArea(string value) { this.GridArea = value; return this; } - public StackedHorizontalBarChart WithFallback(IUnion value) + public ComUserMicrosoftGraphComponent WithFallback(IUnion value) { this.Fallback = value; return this; @@ -11915,91 +14978,56 @@ public StackedHorizontalBarChart WithFallback(IUnion -/// Defines the collection of data series to display in as a stacked horizontal bar chart. +/// Represents the properties of a Persona component. /// -public class StackedHorizontalBarChartData : SerializableObject +public class PersonaProperties : SerializableObject { /// - /// Deserializes a JSON string into an object of type StackedHorizontalBarChartData. + /// Deserializes a JSON string into an object of type PersonaProperties. /// - public static StackedHorizontalBarChartData? Deserialize(string json) + public static PersonaProperties? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The title of the series. - /// - [JsonPropertyName("title")] - public string? Title { get; set; } - - /// - /// The data points in the series. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("data")] - public IList? Data { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// Serializes this StackedHorizontalBarChartData into a JSON string. + /// The Id of the persona. /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } - - public StackedHorizontalBarChartData WithTitle(string value) - { - this.Title = value; - return this; - } - - public StackedHorizontalBarChartData WithData(params IList value) - { - this.Data = value; - return this; - } -} + [JsonPropertyName("id")] + public string? Id { get; set; } -/// -/// A data point in a series. -/// -public class StackedHorizontalBarChartDataPoint : SerializableObject -{ /// - /// Deserializes a JSON string into an object of type StackedHorizontalBarChartDataPoint. + /// The UPN of the persona. /// - public static StackedHorizontalBarChartDataPoint? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } + [JsonPropertyName("userPrincipalName")] + public string? UserPrincipalName { get; set; } /// - /// The legend associated with the data point. + /// The display name of the persona. /// - [JsonPropertyName("legend")] - public string? Legend { get; set; } + [JsonPropertyName("displayName")] + public string? DisplayName { get; set; } /// - /// The value of the data point. + /// Defines the style of the icon for the persona. /// - [JsonPropertyName("value")] - public float? Value { get; set; } + [JsonPropertyName("iconStyle")] + public PersonaIconStyle? IconStyle { get; set; } /// - /// The color to use to render the bar associated with the data point. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// Defines how the persona should be displayed. /// - [JsonPropertyName("color")] - public ChartColor? Color { get; set; } + [JsonPropertyName("style")] + public PersonaDisplayStyle? Style { get; set; } /// - /// Serializes this StackedHorizontalBarChartDataPoint into a JSON string. + /// Serializes this PersonaProperties into a JSON string. /// public string Serialize() { @@ -12013,43 +15041,67 @@ public string Serialize() ); } - public StackedHorizontalBarChartDataPoint WithLegend(string value) + public PersonaProperties WithKey(string value) { - this.Legend = value; + this.Key = value; return this; } - public StackedHorizontalBarChartDataPoint WithValue(float value) + public PersonaProperties WithId(string value) { - this.Value = value; + this.Id = value; return this; } - public StackedHorizontalBarChartDataPoint WithColor(ChartColor value) + public PersonaProperties WithUserPrincipalName(string value) { - this.Color = value; + this.UserPrincipalName = value; + return this; + } + + public PersonaProperties WithDisplayName(string value) + { + this.DisplayName = value; + return this; + } + + public PersonaProperties WithIconStyle(PersonaIconStyle value) + { + this.IconStyle = value; + return this; + } + + public PersonaProperties WithStyle(PersonaDisplayStyle value) + { + this.Style = value; return this; } } /// -/// A line chart. +/// Displays multiple users' information, including their profile pictures. /// -public class LineChart : CardElement +public class ComUsersMicrosoftGraphComponent : CardElement { /// - /// Deserializes a JSON string into an object of type LineChart. + /// Deserializes a JSON string into an object of type ComUsersMicrosoftGraphComponent. /// - public static LineChart? Deserialize(string json) + public static ComUsersMicrosoftGraphComponent? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Chart.Line**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Component**. /// [JsonPropertyName("type")] - public string Type { get; } = "Chart.Line"; + public string Type { get; } = "Component"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -12061,7 +15113,7 @@ public class LineChart : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -12073,91 +15125,55 @@ public class LineChart : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } - - /// - /// Controls how the element should be horizontally aligned. - /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } - - /// - /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. - /// - [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } - - /// - /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). - /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } - - /// - /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. - /// - [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The title of the chart. - /// - [JsonPropertyName("title")] - public string? Title { get; set; } - - /// - /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). - /// - [JsonPropertyName("colorSet")] - public ChartColorSet? ColorSet { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// - /// The title of the x axis. + /// Controls how the element should be horizontally aligned. /// - [JsonPropertyName("xAxisTitle")] - public string? XAxisTitle { get; set; } + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } /// - /// The title of the y axis. + /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// - [JsonPropertyName("yAxisTitle")] - public string? YAxisTitle { get; set; } + [JsonPropertyName("spacing")] + public Spacing? Spacing { get; set; } = Spacing.Default; /// - /// The color to use for all data points. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). /// - [JsonPropertyName("color")] - public ChartColor? Color { get; set; } + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } /// - /// The data point series in the line chart. + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// - [JsonPropertyName("data")] - public IList? Data { get; set; } + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; /// - /// The maximum y range. + /// Must be **graph.microsoft.com/users**. /// - [JsonPropertyName("yMin")] - public float? YMin { get; set; } + [JsonPropertyName("name")] + public string Name { get; } = "graph.microsoft.com/users"; /// - /// The minimum y range. + /// The properties of the PersonaSet component. /// - [JsonPropertyName("yMax")] - public float? YMax { get; set; } + [JsonPropertyName("properties")] + public PersonaSetProperties? Properties { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -12172,7 +15188,7 @@ public class LineChart : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this LineChart into a JSON string. + /// Serializes this ComUsersMicrosoftGraphComponent into a JSON string. /// public string Serialize() { @@ -12186,121 +15202,85 @@ public string Serialize() ); } - public LineChart WithId(string value) + public ComUsersMicrosoftGraphComponent WithKey(string value) + { + this.Key = value; + return this; + } + + public ComUsersMicrosoftGraphComponent WithId(string value) { this.Id = value; return this; } - public LineChart WithRequires(HostCapabilities value) + public ComUsersMicrosoftGraphComponent WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public LineChart WithLang(string value) + public ComUsersMicrosoftGraphComponent WithLang(string value) { this.Lang = value; return this; } - public LineChart WithIsVisible(bool value) + public ComUsersMicrosoftGraphComponent WithIsVisible(bool value) { this.IsVisible = value; return this; } - public LineChart WithSeparator(bool value) + public ComUsersMicrosoftGraphComponent WithSeparator(bool value) { this.Separator = value; return this; } - public LineChart WithHeight(ElementHeight value) + public ComUsersMicrosoftGraphComponent WithHeight(ElementHeight value) { this.Height = value; return this; } - public LineChart WithHorizontalAlignment(HorizontalAlignment value) + public ComUsersMicrosoftGraphComponent WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public LineChart WithSpacing(Spacing value) + public ComUsersMicrosoftGraphComponent WithSpacing(Spacing value) { this.Spacing = value; return this; } - public LineChart WithTargetWidth(TargetWidth value) + public ComUsersMicrosoftGraphComponent WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public LineChart WithIsSortKey(bool value) + public ComUsersMicrosoftGraphComponent WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public LineChart WithTitle(string value) - { - this.Title = value; - return this; - } - - public LineChart WithColorSet(ChartColorSet value) - { - this.ColorSet = value; - return this; - } - - public LineChart WithXAxisTitle(string value) - { - this.XAxisTitle = value; - return this; - } - - public LineChart WithYAxisTitle(string value) - { - this.YAxisTitle = value; - return this; - } - - public LineChart WithColor(ChartColor value) - { - this.Color = value; - return this; - } - - public LineChart WithData(params IList value) - { - this.Data = value; - return this; - } - - public LineChart WithYMin(float value) - { - this.YMin = value; - return this; - } - - public LineChart WithYMax(float value) + public ComUsersMicrosoftGraphComponent WithProperties(PersonaSetProperties value) { - this.YMax = value; + this.Properties = value; return this; } - public LineChart WithGridArea(string value) + public ComUsersMicrosoftGraphComponent WithGridArea(string value) { this.GridArea = value; return this; } - public LineChart WithFallback(IUnion value) + public ComUsersMicrosoftGraphComponent WithFallback(IUnion value) { this.Fallback = value; return this; @@ -12308,38 +15288,44 @@ public LineChart WithFallback(IUnion value) } /// -/// Represents a collection of data points series in a line chart. +/// Represents the properties of a PersonaSet component. /// -public class LineChartData : SerializableObject +public class PersonaSetProperties : SerializableObject { /// - /// Deserializes a JSON string into an object of type LineChartData. + /// Deserializes a JSON string into an object of type PersonaSetProperties. /// - public static LineChartData? Deserialize(string json) + public static PersonaSetProperties? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The legend of the chart. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("legend")] - public string? Legend { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The data points in the series. + /// The users a PersonaSet component should display. /// - [JsonPropertyName("values")] - public IList? Values { get; set; } + [JsonPropertyName("users")] + public IList? Users { get; set; } /// - /// The color all data points in the series. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// Defines the style of the icon for the personas in the set. /// - [JsonPropertyName("color")] - public ChartColor? Color { get; set; } + [JsonPropertyName("iconStyle")] + public PersonaIconStyle? IconStyle { get; set; } /// - /// Serializes this LineChartData into a JSON string. + /// Defines how each persona in the set should be displayed. + /// + [JsonPropertyName("style")] + public PersonaDisplayStyle? Style { get; set; } + + /// + /// Serializes this PersonaSetProperties into a JSON string. /// public string Serialize() { @@ -12353,100 +15339,55 @@ public string Serialize() ); } - public LineChartData WithLegend(string value) - { - this.Legend = value; - return this; - } - - public LineChartData WithValues(params IList value) + public PersonaSetProperties WithKey(string value) { - this.Values = value; + this.Key = value; return this; } - public LineChartData WithColor(ChartColor value) + public PersonaSetProperties WithUsers(params IList value) { - this.Color = value; + this.Users = value; return this; } -} - -/// -/// Represents a single data point in a line chart. -/// -public class LineChartValue : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type LineChartValue. - /// - public static LineChartValue? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } - - /// - /// The x axis value of the data point. - /// - /// If all x values of the x [Chart.Line](https://adaptivecards.microsoft.com/?topic=Chart.Line) are expressed as a number, or if all x values are expressed as a date string in the `YYYY-MM-DD` format, the chart will be rendered as a time series chart, i.e. x axis values will span across the minimum x value to maximum x value range. - /// - /// Otherwise, if x values are represented as a mix of numbers and strings or if at least one x value isn't in the `YYYY-MM-DD` format, the chart will be rendered as a categorical chart, i.e. x axis values will be displayed as categories. - /// - [JsonPropertyName("x")] - public IUnion? X { get; set; } - - /// - /// The y axis value of the data point. - /// - [JsonPropertyName("y")] - public float? Y { get; set; } - - /// - /// Serializes this LineChartValue into a JSON string. - /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } - public LineChartValue WithX(IUnion value) + public PersonaSetProperties WithIconStyle(PersonaIconStyle value) { - this.X = value; + this.IconStyle = value; return this; } - public LineChartValue WithY(float value) + public PersonaSetProperties WithStyle(PersonaDisplayStyle value) { - this.Y = value; + this.Style = value; return this; } } /// -/// A gauge chart. +/// Displays information about a generic graph resource. /// -public class GaugeChart : CardElement +public class ComResourceMicrosoftGraphComponent : CardElement { /// - /// Deserializes a JSON string into an object of type GaugeChart. + /// Deserializes a JSON string into an object of type ComResourceMicrosoftGraphComponent. /// - public static GaugeChart? Deserialize(string json) + public static ComResourceMicrosoftGraphComponent? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Chart.Gauge**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Component**. /// [JsonPropertyName("type")] - public string Type { get; } = "Chart.Gauge"; + public string Type { get; } = "Component"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -12458,7 +15399,7 @@ public class GaugeChart : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -12470,97 +15411,55 @@ public class GaugeChart : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } - - /// - /// Controls how the element should be horizontally aligned. - /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } - - /// - /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. - /// - [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } - - /// - /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). - /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } - - /// - /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. - /// - [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The title of the chart. - /// - [JsonPropertyName("title")] - public string? Title { get; set; } - - /// - /// The name of the set of colors to use to render the chart. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). - /// - [JsonPropertyName("colorSet")] - public ChartColorSet? ColorSet { get; set; } - - /// - /// The minimum value of the gauge. - /// - [JsonPropertyName("min")] - public float? Min { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// - /// The maximum value of the gauge. + /// Controls how the element should be horizontally aligned. /// - [JsonPropertyName("max")] - public float? Max { get; set; } + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } /// - /// The sub-label of the gauge. + /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// - [JsonPropertyName("subLabel")] - public string? SubLabel { get; set; } + [JsonPropertyName("spacing")] + public Spacing? Spacing { get; set; } = Spacing.Default; /// - /// Controls whether the min/max values should be displayed. + /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). /// - [JsonPropertyName("showMinMax")] - public bool? ShowMinMax { get; set; } + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } /// - /// The segments to display in the gauge. + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// - [JsonPropertyName("segments")] - public IList? Segments { get; set; } + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; /// - /// The value of the gauge. + /// Must be **graph.microsoft.com/resource**. /// - [JsonPropertyName("value")] - public float? Value { get; set; } + [JsonPropertyName("name")] + public string Name { get; } = "graph.microsoft.com/resource"; /// - /// The format used to display the gauge's value. + /// The properties of the resource. /// - [JsonPropertyName("valueFormat")] - public GaugeChartValueFormat? ValueFormat { get; set; } + [JsonPropertyName("properties")] + public ResourceProperties? Properties { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -12575,7 +15474,7 @@ public class GaugeChart : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this GaugeChart into a JSON string. + /// Serializes this ComResourceMicrosoftGraphComponent into a JSON string. /// public string Serialize() { @@ -12589,166 +15488,195 @@ public string Serialize() ); } - public GaugeChart WithId(string value) + public ComResourceMicrosoftGraphComponent WithKey(string value) + { + this.Key = value; + return this; + } + + public ComResourceMicrosoftGraphComponent WithId(string value) { this.Id = value; return this; } - public GaugeChart WithRequires(HostCapabilities value) + public ComResourceMicrosoftGraphComponent WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public GaugeChart WithLang(string value) + public ComResourceMicrosoftGraphComponent WithLang(string value) { this.Lang = value; return this; } - public GaugeChart WithIsVisible(bool value) + public ComResourceMicrosoftGraphComponent WithIsVisible(bool value) { this.IsVisible = value; return this; } - public GaugeChart WithSeparator(bool value) + public ComResourceMicrosoftGraphComponent WithSeparator(bool value) { this.Separator = value; return this; } - public GaugeChart WithHeight(ElementHeight value) + public ComResourceMicrosoftGraphComponent WithHeight(ElementHeight value) { this.Height = value; return this; } - public GaugeChart WithHorizontalAlignment(HorizontalAlignment value) + public ComResourceMicrosoftGraphComponent WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public GaugeChart WithSpacing(Spacing value) + public ComResourceMicrosoftGraphComponent WithSpacing(Spacing value) { this.Spacing = value; return this; } - public GaugeChart WithTargetWidth(TargetWidth value) + public ComResourceMicrosoftGraphComponent WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public GaugeChart WithIsSortKey(bool value) + public ComResourceMicrosoftGraphComponent WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public GaugeChart WithTitle(string value) + public ComResourceMicrosoftGraphComponent WithProperties(ResourceProperties value) { - this.Title = value; + this.Properties = value; return this; } - public GaugeChart WithColorSet(ChartColorSet value) + public ComResourceMicrosoftGraphComponent WithGridArea(string value) { - this.ColorSet = value; + this.GridArea = value; return this; } - public GaugeChart WithMin(float value) + public ComResourceMicrosoftGraphComponent WithFallback(IUnion value) { - this.Min = value; + this.Fallback = value; return this; } +} - public GaugeChart WithMax(float value) +/// +/// Represents the properties of a resource component. +/// +public class ResourceProperties : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type ResourceProperties. + /// + public static ResourceProperties? Deserialize(string json) { - this.Max = value; - return this; + return JsonSerializer.Deserialize(json); } - public GaugeChart WithSubLabel(string value) - { - this.SubLabel = value; - return this; - } + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } - public GaugeChart WithShowMinMax(bool value) - { - this.ShowMinMax = value; - return this; - } + /// + /// The Id of the resource. + /// + [JsonPropertyName("id")] + public string? Id { get; set; } - public GaugeChart WithSegments(params IList value) + /// + /// The reference to the resource. + /// + [JsonPropertyName("resourceReference")] + public IDictionary? ResourceReference { get; set; } + + /// + /// The visualization of the resource. + /// + [JsonPropertyName("resourceVisualization")] + public ResourceVisualization? ResourceVisualization { get; set; } + + /// + /// Serializes this ResourceProperties into a JSON string. + /// + public string Serialize() { - this.Segments = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public GaugeChart WithValue(float value) + public ResourceProperties WithKey(string value) { - this.Value = value; + this.Key = value; return this; } - public GaugeChart WithValueFormat(GaugeChartValueFormat value) + public ResourceProperties WithId(string value) { - this.ValueFormat = value; + this.Id = value; return this; } - public GaugeChart WithGridArea(string value) + public ResourceProperties WithResourceReference(IDictionary value) { - this.GridArea = value; + this.ResourceReference = value; return this; } - public GaugeChart WithFallback(IUnion value) + public ResourceProperties WithResourceVisualization(ResourceVisualization value) { - this.Fallback = value; + this.ResourceVisualization = value; return this; } } /// -/// The legend of the chart. +/// Represents a visualization of a resource. /// -public class GaugeChartLegend : SerializableObject +public class ResourceVisualization : SerializableObject { /// - /// Deserializes a JSON string into an object of type GaugeChartLegend. + /// Deserializes a JSON string into an object of type ResourceVisualization. /// - public static GaugeChartLegend? Deserialize(string json) + public static ResourceVisualization? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The size of the segment. - /// - [JsonPropertyName("size")] - public float? Size { get; set; } - - /// - /// The legend text associated with the segment. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("legend")] - public string? Legend { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The color to use for the segment. See [Chart colors reference](https://adaptivecards.microsoft.com/?topic=chart-colors-reference). + /// The media associated with the resource. /// - [JsonPropertyName("color")] - public ChartColor? Color { get; set; } + [JsonPropertyName("media")] + public string? Media { get; set; } /// - /// Serializes this GaugeChartLegend into a JSON string. + /// Serializes this ResourceVisualization into a JSON string. /// public string Serialize() { @@ -12762,43 +15690,43 @@ public string Serialize() ); } - public GaugeChartLegend WithSize(float value) - { - this.Size = value; - return this; - } - - public GaugeChartLegend WithLegend(string value) + public ResourceVisualization WithKey(string value) { - this.Legend = value; + this.Key = value; return this; } - public GaugeChartLegend WithColor(ChartColor value) + public ResourceVisualization WithMedia(string value) { - this.Color = value; + this.Media = value; return this; } } /// -/// A formatted and syntax-colored code block. +/// Displays information about a file resource. /// -public class CodeBlock : CardElement +public class ComFileMicrosoftGraphComponent : CardElement { /// - /// Deserializes a JSON string into an object of type CodeBlock. + /// Deserializes a JSON string into an object of type ComFileMicrosoftGraphComponent. /// - public static CodeBlock? Deserialize(string json) + public static ComFileMicrosoftGraphComponent? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **CodeBlock**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **Component**. /// [JsonPropertyName("type")] - public string Type { get; } = "CodeBlock"; + public string Type { get; } = "Component"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -12810,7 +15738,7 @@ public class CodeBlock : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -12822,19 +15750,19 @@ public class CodeBlock : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -12846,7 +15774,7 @@ public class CodeBlock : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -12858,25 +15786,19 @@ public class CodeBlock : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The code snippet to display. - /// - [JsonPropertyName("codeSnippet")] - public string? CodeSnippet { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The language the code snippet is expressed in. + /// Must be **graph.microsoft.com/file**. /// - [JsonPropertyName("language")] - public CodeLanguage? Language { get; set; } + [JsonPropertyName("name")] + public string Name { get; } = "graph.microsoft.com/file"; /// - /// A number that represents the line in the file from where the code snippet was extracted. + /// The properties of the file. /// - [JsonPropertyName("startLineNumber")] - public float? StartLineNumber { get; set; } + [JsonPropertyName("properties")] + public FileProperties? Properties { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -12891,7 +15813,7 @@ public class CodeBlock : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this CodeBlock into a JSON string. + /// Serializes this ComFileMicrosoftGraphComponent into a JSON string. /// public string Serialize() { @@ -12905,110 +15827,187 @@ public string Serialize() ); } - public CodeBlock WithId(string value) + public ComFileMicrosoftGraphComponent WithKey(string value) + { + this.Key = value; + return this; + } + + public ComFileMicrosoftGraphComponent WithId(string value) { this.Id = value; return this; } - public CodeBlock WithRequires(HostCapabilities value) + public ComFileMicrosoftGraphComponent WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public CodeBlock WithLang(string value) + public ComFileMicrosoftGraphComponent WithLang(string value) { this.Lang = value; return this; } - public CodeBlock WithIsVisible(bool value) + public ComFileMicrosoftGraphComponent WithIsVisible(bool value) { this.IsVisible = value; return this; } - public CodeBlock WithSeparator(bool value) + public ComFileMicrosoftGraphComponent WithSeparator(bool value) { this.Separator = value; return this; } - public CodeBlock WithHeight(ElementHeight value) + public ComFileMicrosoftGraphComponent WithHeight(ElementHeight value) { this.Height = value; return this; } - public CodeBlock WithHorizontalAlignment(HorizontalAlignment value) + public ComFileMicrosoftGraphComponent WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public CodeBlock WithSpacing(Spacing value) + public ComFileMicrosoftGraphComponent WithSpacing(Spacing value) + { + this.Spacing = value; + return this; + } + + public ComFileMicrosoftGraphComponent WithTargetWidth(TargetWidth value) + { + this.TargetWidth = value; + return this; + } + + public ComFileMicrosoftGraphComponent WithIsSortKey(bool value) + { + this.IsSortKey = value; + return this; + } + + public ComFileMicrosoftGraphComponent WithProperties(FileProperties value) + { + this.Properties = value; + return this; + } + + public ComFileMicrosoftGraphComponent WithGridArea(string value) { - this.Spacing = value; + this.GridArea = value; return this; } - public CodeBlock WithTargetWidth(TargetWidth value) + public ComFileMicrosoftGraphComponent WithFallback(IUnion value) { - this.TargetWidth = value; + this.Fallback = value; return this; } +} - public CodeBlock WithIsSortKey(bool value) +/// +/// Represents the properties of a file component. +/// +public class FileProperties : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type FileProperties. + /// + public static FileProperties? Deserialize(string json) { - this.IsSortKey = value; - return this; + return JsonSerializer.Deserialize(json); } - public CodeBlock WithCodeSnippet(string value) + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The name of the file. + /// + [JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// The file extension. + /// + [JsonPropertyName("extension")] + public string? Extension { get; set; } + + /// + /// The URL of the file. + /// + [JsonPropertyName("url")] + public string? Url { get; set; } + + /// + /// Serializes this FileProperties into a JSON string. + /// + public string Serialize() { - this.CodeSnippet = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public CodeBlock WithLanguage(CodeLanguage value) + public FileProperties WithKey(string value) { - this.Language = value; + this.Key = value; return this; } - public CodeBlock WithStartLineNumber(float value) + public FileProperties WithName(string value) { - this.StartLineNumber = value; + this.Name = value; return this; } - public CodeBlock WithGridArea(string value) + public FileProperties WithExtension(string value) { - this.GridArea = value; + this.Extension = value; return this; } - public CodeBlock WithFallback(IUnion value) + public FileProperties WithUrl(string value) { - this.Fallback = value; + this.Url = value; return this; } } /// -/// Displays a user's information, including their profile picture. +/// Displays information about a calendar event. /// -public class ComUserMicrosoftGraphComponent : CardElement +public class ComEventMicrosoftGraphComponent : CardElement { /// - /// Deserializes a JSON string into an object of type ComUserMicrosoftGraphComponent. + /// Deserializes a JSON string into an object of type ComEventMicrosoftGraphComponent. /// - public static ComUserMicrosoftGraphComponent? Deserialize(string json) + public static ComEventMicrosoftGraphComponent? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + /// /// Must be **Component**. /// @@ -13025,7 +16024,7 @@ public class ComUserMicrosoftGraphComponent : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -13037,19 +16036,19 @@ public class ComUserMicrosoftGraphComponent : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -13061,7 +16060,7 @@ public class ComUserMicrosoftGraphComponent : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -13073,19 +16072,19 @@ public class ComUserMicrosoftGraphComponent : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// Must be **graph.microsoft.com/user**. + /// Must be **graph.microsoft.com/event**. /// [JsonPropertyName("name")] - public string Name { get; } = "graph.microsoft.com/user"; + public string Name { get; } = "graph.microsoft.com/event"; /// - /// The properties of the user. + /// The properties of the event. /// [JsonPropertyName("properties")] - public PersonaProperties? Properties { get; set; } + public CalendarEventProperties? Properties { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -13100,7 +16099,7 @@ public class ComUserMicrosoftGraphComponent : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this ComUserMicrosoftGraphComponent into a JSON string. + /// Serializes this ComEventMicrosoftGraphComponent into a JSON string. /// public string Serialize() { @@ -13114,79 +16113,85 @@ public string Serialize() ); } - public ComUserMicrosoftGraphComponent WithId(string value) + public ComEventMicrosoftGraphComponent WithKey(string value) + { + this.Key = value; + return this; + } + + public ComEventMicrosoftGraphComponent WithId(string value) { this.Id = value; return this; } - public ComUserMicrosoftGraphComponent WithRequires(HostCapabilities value) + public ComEventMicrosoftGraphComponent WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public ComUserMicrosoftGraphComponent WithLang(string value) + public ComEventMicrosoftGraphComponent WithLang(string value) { this.Lang = value; return this; } - public ComUserMicrosoftGraphComponent WithIsVisible(bool value) + public ComEventMicrosoftGraphComponent WithIsVisible(bool value) { this.IsVisible = value; return this; } - public ComUserMicrosoftGraphComponent WithSeparator(bool value) + public ComEventMicrosoftGraphComponent WithSeparator(bool value) { this.Separator = value; return this; } - public ComUserMicrosoftGraphComponent WithHeight(ElementHeight value) + public ComEventMicrosoftGraphComponent WithHeight(ElementHeight value) { this.Height = value; return this; } - public ComUserMicrosoftGraphComponent WithHorizontalAlignment(HorizontalAlignment value) + public ComEventMicrosoftGraphComponent WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public ComUserMicrosoftGraphComponent WithSpacing(Spacing value) + public ComEventMicrosoftGraphComponent WithSpacing(Spacing value) { this.Spacing = value; return this; } - public ComUserMicrosoftGraphComponent WithTargetWidth(TargetWidth value) + public ComEventMicrosoftGraphComponent WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public ComUserMicrosoftGraphComponent WithIsSortKey(bool value) + public ComEventMicrosoftGraphComponent WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public ComUserMicrosoftGraphComponent WithProperties(PersonaProperties value) + public ComEventMicrosoftGraphComponent WithProperties(CalendarEventProperties value) { this.Properties = value; return this; } - public ComUserMicrosoftGraphComponent WithGridArea(string value) + public ComEventMicrosoftGraphComponent WithGridArea(string value) { this.GridArea = value; return this; } - public ComUserMicrosoftGraphComponent WithFallback(IUnion value) + public ComEventMicrosoftGraphComponent WithFallback(IUnion value) { this.Fallback = value; return this; @@ -13194,163 +16199,98 @@ public ComUserMicrosoftGraphComponent WithFallback(IUnion -/// Represents the properties of a Persona component. -/// -public class PersonaProperties : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type PersonaProperties. - /// - public static PersonaProperties? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } - - /// - /// The UPN of the persona. - /// - [JsonPropertyName("userPrincipalName")] - public string? UserPrincipalName { get; set; } - - /// - /// The display name of the persona. - /// - [JsonPropertyName("displayName")] - public string? DisplayName { get; set; } - - /// - /// Serializes this PersonaProperties into a JSON string. - /// - public string Serialize() - { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); - } - - public PersonaProperties WithUserPrincipalName(string value) - { - this.UserPrincipalName = value; - return this; - } - - public PersonaProperties WithDisplayName(string value) - { - this.DisplayName = value; - return this; - } -} - -/// -/// Displays multiple users' information, including their profile pictures. +/// The properties of a calendar event. /// -public class ComUsersMicrosoftGraphComponent : CardElement +public class CalendarEventProperties : SerializableObject { /// - /// Deserializes a JSON string into an object of type ComUsersMicrosoftGraphComponent. + /// Deserializes a JSON string into an object of type CalendarEventProperties. /// - public static ComUsersMicrosoftGraphComponent? Deserialize(string json) + public static CalendarEventProperties? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Component**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("type")] - public string Type { get; } = "Component"; + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. + /// The ID of the event. /// [JsonPropertyName("id")] public string? Id { get; set; } /// - /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). - /// - [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } - - /// - /// The locale associated with the element. - /// - [JsonPropertyName("lang")] - public string? Lang { get; set; } - - /// - /// Controls the visibility of the element. + /// The title of the event. /// - [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + [JsonPropertyName("title")] + public string? Title { get; set; } /// - /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. + /// The start date and time of the event. /// - [JsonPropertyName("separator")] - public bool? Separator { get; set; } + [JsonPropertyName("start")] + public string? Start { get; set; } /// - /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. + /// The end date and time of the event. /// - [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + [JsonPropertyName("end")] + public string? End { get; set; } /// - /// Controls how the element should be horizontally aligned. + /// The status of the event. /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } + [JsonPropertyName("status")] + public string? Status { get; set; } /// - /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. + /// The locations of the event. /// - [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + [JsonPropertyName("locations")] + public IList? Locations { get; set; } /// - /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). + /// The URL of the online meeting. /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } + [JsonPropertyName("onlineMeetingUrl")] + public string? OnlineMeetingUrl { get; set; } /// - /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. + /// Indicates if the event is all day. /// - [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + [JsonPropertyName("isAllDay")] + public bool? IsAllDay { get; set; } /// - /// Must be **graph.microsoft.com/users**. + /// The extension of the event. /// - [JsonPropertyName("name")] - public string Name { get; } = "graph.microsoft.com/users"; + [JsonPropertyName("extension")] + public string? Extension { get; set; } /// - /// The properties of the set. + /// The URL of the event. /// - [JsonPropertyName("properties")] - public PersonaSetProperties? Properties { get; set; } + [JsonPropertyName("url")] + public string? Url { get; set; } /// - /// The area of a Layout.AreaGrid layout in which an element should be displayed. + /// The attendees of the event. /// - [JsonPropertyName("grid.area")] - public string? GridArea { get; set; } + [JsonPropertyName("attendees")] + public IList? Attendees { get; set; } /// - /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// The organizer of the event. /// - [JsonPropertyName("fallback")] - public IUnion? Fallback { get; set; } + [JsonPropertyName("organizer")] + public CalendarEventAttendee? Organizer { get; set; } /// - /// Serializes this ComUsersMicrosoftGraphComponent into a JSON string. + /// Serializes this CalendarEventProperties into a JSON string. /// public string Serialize() { @@ -13364,106 +16304,136 @@ public string Serialize() ); } - public ComUsersMicrosoftGraphComponent WithId(string value) + public CalendarEventProperties WithKey(string value) { - this.Id = value; + this.Key = value; return this; } - public ComUsersMicrosoftGraphComponent WithRequires(HostCapabilities value) + public CalendarEventProperties WithId(string value) { - this.Requires = value; + this.Id = value; return this; } - public ComUsersMicrosoftGraphComponent WithLang(string value) + public CalendarEventProperties WithTitle(string value) { - this.Lang = value; + this.Title = value; return this; } - public ComUsersMicrosoftGraphComponent WithIsVisible(bool value) + public CalendarEventProperties WithStart(string value) { - this.IsVisible = value; + this.Start = value; return this; } - public ComUsersMicrosoftGraphComponent WithSeparator(bool value) + public CalendarEventProperties WithEnd(string value) { - this.Separator = value; + this.End = value; return this; } - public ComUsersMicrosoftGraphComponent WithHeight(ElementHeight value) + public CalendarEventProperties WithStatus(string value) { - this.Height = value; + this.Status = value; return this; } - public ComUsersMicrosoftGraphComponent WithHorizontalAlignment(HorizontalAlignment value) + public CalendarEventProperties WithLocations(params IList value) { - this.HorizontalAlignment = value; + this.Locations = value; return this; } - public ComUsersMicrosoftGraphComponent WithSpacing(Spacing value) + public CalendarEventProperties WithOnlineMeetingUrl(string value) { - this.Spacing = value; + this.OnlineMeetingUrl = value; return this; } - public ComUsersMicrosoftGraphComponent WithTargetWidth(TargetWidth value) + public CalendarEventProperties WithIsAllDay(bool value) { - this.TargetWidth = value; + this.IsAllDay = value; return this; } - public ComUsersMicrosoftGraphComponent WithIsSortKey(bool value) + public CalendarEventProperties WithExtension(string value) { - this.IsSortKey = value; + this.Extension = value; return this; } - public ComUsersMicrosoftGraphComponent WithProperties(PersonaSetProperties value) + public CalendarEventProperties WithUrl(string value) { - this.Properties = value; + this.Url = value; return this; } - public ComUsersMicrosoftGraphComponent WithGridArea(string value) + public CalendarEventProperties WithAttendees(params IList value) { - this.GridArea = value; + this.Attendees = value; return this; } - public ComUsersMicrosoftGraphComponent WithFallback(IUnion value) + public CalendarEventProperties WithOrganizer(CalendarEventAttendee value) { - this.Fallback = value; + this.Organizer = value; return this; } } /// -/// Represents the properties of a PersonaSet component. +/// Represents a calendar event attendee. /// -public class PersonaSetProperties : SerializableObject +public class CalendarEventAttendee : SerializableObject { /// - /// Deserializes a JSON string into an object of type PersonaSetProperties. + /// Deserializes a JSON string into an object of type CalendarEventAttendee. /// - public static PersonaSetProperties? Deserialize(string json) + public static CalendarEventAttendee? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The users a PersonaSet component should display. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("users")] - public IList? Users { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// Serializes this PersonaSetProperties into a JSON string. + /// The name of the attendee. + /// + [JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// The email address of the attendee. + /// + [JsonPropertyName("email")] + public string? Email { get; set; } + + /// + /// The title of the attendee. + /// + [JsonPropertyName("title")] + public string? Title { get; set; } + + /// + /// The type of the attendee. + /// + [JsonPropertyName("type")] + public string? Type { get; set; } + + /// + /// The status of the attendee. + /// + [JsonPropertyName("status")] + public string? Status { get; set; } + + /// + /// Serializes this CalendarEventAttendee into a JSON string. /// public string Serialize() { @@ -13477,31 +16447,67 @@ public string Serialize() ); } - public PersonaSetProperties WithUsers(params IList value) + public CalendarEventAttendee WithKey(string value) { - this.Users = value; + this.Key = value; + return this; + } + + public CalendarEventAttendee WithName(string value) + { + this.Name = value; + return this; + } + + public CalendarEventAttendee WithEmail(string value) + { + this.Email = value; + return this; + } + + public CalendarEventAttendee WithTitle(string value) + { + this.Title = value; + return this; + } + + public CalendarEventAttendee WithType(string value) + { + this.Type = value; + return this; + } + + public CalendarEventAttendee WithStatus(string value) + { + this.Status = value; return this; } } /// -/// Displays information about a generic graph resource. +/// A page inside a Carousel element. /// -public class ComResourceMicrosoftGraphComponent : CardElement +public class CarouselPage : CardElement { /// - /// Deserializes a JSON string into an object of type ComResourceMicrosoftGraphComponent. + /// Deserializes a JSON string into an object of type CarouselPage. /// - public static ComResourceMicrosoftGraphComponent? Deserialize(string json) + public static CarouselPage? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Component**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **CarouselPage**. /// [JsonPropertyName("type")] - public string Type { get; } = "Component"; + public string Type { get; } = "CarouselPage"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -13513,7 +16519,7 @@ public class ComResourceMicrosoftGraphComponent : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -13525,55 +16531,85 @@ public class ComResourceMicrosoftGraphComponent : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// - /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. + /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// - [JsonPropertyName("separator")] - public bool? Separator { get; set; } + [JsonPropertyName("height")] + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// - /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. + /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). /// - [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + [JsonPropertyName("targetWidth")] + public TargetWidth? TargetWidth { get; set; } /// - /// Controls how the element should be horizontally aligned. + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; /// - /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. + /// An Action that will be invoked when the element is tapped or clicked. Action.ShowCard is not supported. /// - [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + [JsonPropertyName("selectAction")] + public Action? SelectAction { get; set; } /// - /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). + /// The style of the container. Container styles control the colors of the background, border and text inside the container, in such a way that contrast requirements are always met. /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } + [JsonPropertyName("style")] + public ContainerStyle? Style { get; set; } /// - /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. + /// Controls if a border should be displayed around the container. /// - [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + [JsonPropertyName("showBorder")] + public bool? ShowBorder { get; set; } = false; /// - /// Must be **graph.microsoft.com/resource**. + /// Controls if the container should have rounded corners. /// - [JsonPropertyName("name")] - public string Name { get; } = "graph.microsoft.com/resource"; + [JsonPropertyName("roundedCorners")] + public bool? RoundedCorners { get; set; } = false; /// - /// The properties of the resource. + /// The layouts associated with the container. The container can dynamically switch from one layout to another as the card's width changes. See [Container layouts](https://adaptivecards.microsoft.com/?topic=container-layouts) for more details. /// - [JsonPropertyName("properties")] - public ResourceProperties? Properties { get; set; } + [JsonPropertyName("layouts")] + public IList? Layouts { get; set; } + + /// + /// The minimum height, in pixels, of the container, in the `px` format. + /// + [JsonPropertyName("minHeight")] + public string? MinHeight { get; set; } + + /// + /// Defines the container's background image. + /// + [JsonPropertyName("backgroundImage")] + public IUnion? BackgroundImage { get; set; } + + /// + /// Controls how the container's content should be vertically aligned. + /// + [JsonPropertyName("verticalContentAlignment")] + public VerticalAlignment? VerticalContentAlignment { get; set; } + + /// + /// Controls if the content of the card is to be rendered left-to-right or right-to-left. + /// + [JsonPropertyName("rtl")] + public bool? Rtl { get; set; } + + /// + /// The maximum height, in pixels, of the container, in the `px` format. When the content of a container exceeds the container's maximum height, a vertical scrollbar is displayed. + /// + [JsonPropertyName("maxHeight")] + public string? MaxHeight { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -13588,7 +16624,18 @@ public class ComResourceMicrosoftGraphComponent : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this ComResourceMicrosoftGraphComponent into a JSON string. + /// The elements in the page. + /// + [JsonPropertyName("items")] + public IList? Items { get; set; } + + public CarouselPage(params IList items) + { + this.Items = items; + } + + /// + /// Serializes this CarouselPage into a JSON string. /// public string Serialize() { @@ -13602,209 +16649,157 @@ public string Serialize() ); } - public ComResourceMicrosoftGraphComponent WithId(string value) + public CarouselPage WithKey(string value) { - this.Id = value; + this.Key = value; return this; } - public ComResourceMicrosoftGraphComponent WithRequires(HostCapabilities value) + public CarouselPage WithId(string value) { - this.Requires = value; + this.Id = value; return this; } - public ComResourceMicrosoftGraphComponent WithLang(string value) + public CarouselPage WithRequires(HostCapabilities value) { - this.Lang = value; + this.Requires = value; return this; } - public ComResourceMicrosoftGraphComponent WithIsVisible(bool value) + public CarouselPage WithLang(string value) { - this.IsVisible = value; + this.Lang = value; return this; } - public ComResourceMicrosoftGraphComponent WithSeparator(bool value) + public CarouselPage WithIsVisible(bool value) { - this.Separator = value; + this.IsVisible = value; return this; } - public ComResourceMicrosoftGraphComponent WithHeight(ElementHeight value) + public CarouselPage WithHeight(ElementHeight value) { this.Height = value; return this; } - public ComResourceMicrosoftGraphComponent WithHorizontalAlignment(HorizontalAlignment value) + public CarouselPage WithTargetWidth(TargetWidth value) { - this.HorizontalAlignment = value; + this.TargetWidth = value; return this; } - public ComResourceMicrosoftGraphComponent WithSpacing(Spacing value) + public CarouselPage WithIsSortKey(bool value) { - this.Spacing = value; + this.IsSortKey = value; return this; } - public ComResourceMicrosoftGraphComponent WithTargetWidth(TargetWidth value) + public CarouselPage WithSelectAction(Action value) { - this.TargetWidth = value; + this.SelectAction = value; return this; } - public ComResourceMicrosoftGraphComponent WithIsSortKey(bool value) + public CarouselPage WithStyle(ContainerStyle value) { - this.IsSortKey = value; + this.Style = value; return this; } - public ComResourceMicrosoftGraphComponent WithProperties(ResourceProperties value) + public CarouselPage WithShowBorder(bool value) { - this.Properties = value; + this.ShowBorder = value; return this; } - public ComResourceMicrosoftGraphComponent WithGridArea(string value) + public CarouselPage WithRoundedCorners(bool value) { - this.GridArea = value; + this.RoundedCorners = value; return this; } - public ComResourceMicrosoftGraphComponent WithFallback(IUnion value) + public CarouselPage WithLayouts(params IList value) { - this.Fallback = value; + this.Layouts = value; return this; } -} -/// -/// Represents the properties of a resource component. -/// -public class ResourceProperties : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type ResourceProperties. - /// - public static ResourceProperties? Deserialize(string json) + public CarouselPage WithMinHeight(string value) { - return JsonSerializer.Deserialize(json); + this.MinHeight = value; + return this; } - /// - /// The Id of the resource. - /// - [JsonPropertyName("id")] - public string? Id { get; set; } - - /// - /// The reference to the resource. - /// - [JsonPropertyName("resourceReference")] - public IDictionary? ResourceReference { get; set; } - - /// - /// The visualization of the resource. - /// - [JsonPropertyName("resourceVisualization")] - public ResourceVisualization? ResourceVisualization { get; set; } - - /// - /// Serializes this ResourceProperties into a JSON string. - /// - public string Serialize() + public CarouselPage WithBackgroundImage(IUnion value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.BackgroundImage = value; + return this; } - public ResourceProperties WithId(string value) + public CarouselPage WithVerticalContentAlignment(VerticalAlignment value) { - this.Id = value; + this.VerticalContentAlignment = value; return this; } - public ResourceProperties WithResourceReference(IDictionary value) + public CarouselPage WithRtl(bool value) { - this.ResourceReference = value; + this.Rtl = value; return this; } - public ResourceProperties WithResourceVisualization(ResourceVisualization value) + public CarouselPage WithMaxHeight(string value) { - this.ResourceVisualization = value; + this.MaxHeight = value; return this; } -} -/// -/// Represents a visualization of a resource. -/// -public class ResourceVisualization : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type ResourceVisualization. - /// - public static ResourceVisualization? Deserialize(string json) + public CarouselPage WithGridArea(string value) { - return JsonSerializer.Deserialize(json); + this.GridArea = value; + return this; } - /// - /// The media associated with the resource. - /// - [JsonPropertyName("media")] - public string? Media { get; set; } - - /// - /// Serializes this ResourceVisualization into a JSON string. - /// - public string Serialize() + public CarouselPage WithFallback(IUnion value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.Fallback = value; + return this; } - public ResourceVisualization WithMedia(string value) + public CarouselPage WithItems(params IList value) { - this.Media = value; + this.Items = value; return this; } } /// -/// Displays information about a file resource. +/// Represents a row of cells in a table. /// -public class ComFileMicrosoftGraphComponent : CardElement +public class TableRow : CardElement { /// - /// Deserializes a JSON string into an object of type ComFileMicrosoftGraphComponent. + /// Deserializes a JSON string into an object of type TableRow. /// - public static ComFileMicrosoftGraphComponent? Deserialize(string json) + public static TableRow? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Component**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **TableRow**. /// [JsonPropertyName("type")] - public string Type { get; } = "Component"; + public string Type { get; } = "TableRow"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -13816,7 +16811,7 @@ public class ComFileMicrosoftGraphComponent : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -13828,19 +16823,19 @@ public class ComFileMicrosoftGraphComponent : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls how the element should be horizontally aligned. @@ -13852,7 +16847,7 @@ public class ComFileMicrosoftGraphComponent : CardElement /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -13864,19 +16859,37 @@ public class ComFileMicrosoftGraphComponent : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// Must be **graph.microsoft.com/file**. + /// Controls if a border should be displayed around the container. /// - [JsonPropertyName("name")] - public string Name { get; } = "graph.microsoft.com/file"; + [JsonPropertyName("showBorder")] + public bool? ShowBorder { get; set; } = false; /// - /// The properties of the file. + /// Controls if the container should have rounded corners. /// - [JsonPropertyName("properties")] - public FileProperties? Properties { get; set; } + [JsonPropertyName("roundedCorners")] + public bool? RoundedCorners { get; set; } = false; + + /// + /// The style of the container. Container styles control the colors of the background, border and text inside the container, in such a way that contrast requirements are always met. + /// + [JsonPropertyName("style")] + public ContainerStyle? Style { get; set; } + + /// + /// Controls how the content of every cell in the row should be horizontally aligned by default. This property overrides the horizontalCellContentAlignment property of the table and columns. + /// + [JsonPropertyName("horizontalCellContentAlignment")] + public HorizontalAlignment? HorizontalCellContentAlignment { get; set; } + + /// + /// Controls how the content of every cell in the row should be vertically aligned by default. This property overrides the verticalCellContentAlignment property of the table and columns. + /// + [JsonPropertyName("verticalCellContentAlignment")] + public VerticalAlignment? VerticalCellContentAlignment { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -13891,7 +16904,13 @@ public class ComFileMicrosoftGraphComponent : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this ComFileMicrosoftGraphComponent into a JSON string. + /// The cells in the row. + /// + [JsonPropertyName("cells")] + public IList? Cells { get; set; } + + /// + /// Serializes this TableRow into a JSON string. /// public string Serialize() { @@ -13905,168 +16924,145 @@ public string Serialize() ); } - public ComFileMicrosoftGraphComponent WithId(string value) + public TableRow WithKey(string value) + { + this.Key = value; + return this; + } + + public TableRow WithId(string value) { this.Id = value; return this; } - public ComFileMicrosoftGraphComponent WithRequires(HostCapabilities value) + public TableRow WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public ComFileMicrosoftGraphComponent WithLang(string value) + public TableRow WithLang(string value) { this.Lang = value; return this; } - public ComFileMicrosoftGraphComponent WithIsVisible(bool value) + public TableRow WithIsVisible(bool value) { this.IsVisible = value; return this; } - public ComFileMicrosoftGraphComponent WithSeparator(bool value) + public TableRow WithSeparator(bool value) { this.Separator = value; return this; } - public ComFileMicrosoftGraphComponent WithHeight(ElementHeight value) + public TableRow WithHeight(ElementHeight value) { this.Height = value; return this; } - public ComFileMicrosoftGraphComponent WithHorizontalAlignment(HorizontalAlignment value) + public TableRow WithHorizontalAlignment(HorizontalAlignment value) { this.HorizontalAlignment = value; return this; } - public ComFileMicrosoftGraphComponent WithSpacing(Spacing value) + public TableRow WithSpacing(Spacing value) { this.Spacing = value; return this; } - public ComFileMicrosoftGraphComponent WithTargetWidth(TargetWidth value) + public TableRow WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public ComFileMicrosoftGraphComponent WithIsSortKey(bool value) + public TableRow WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public ComFileMicrosoftGraphComponent WithProperties(FileProperties value) + public TableRow WithShowBorder(bool value) { - this.Properties = value; + this.ShowBorder = value; return this; } - public ComFileMicrosoftGraphComponent WithGridArea(string value) + public TableRow WithRoundedCorners(bool value) { - this.GridArea = value; + this.RoundedCorners = value; return this; } - public ComFileMicrosoftGraphComponent WithFallback(IUnion value) + public TableRow WithStyle(ContainerStyle value) { - this.Fallback = value; + this.Style = value; return this; } -} -/// -/// Represents the properties of a file component. -/// -public class FileProperties : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type FileProperties. - /// - public static FileProperties? Deserialize(string json) + public TableRow WithHorizontalCellContentAlignment(HorizontalAlignment value) { - return JsonSerializer.Deserialize(json); + this.HorizontalCellContentAlignment = value; + return this; } - /// - /// The name of the file. - /// - [JsonPropertyName("name")] - public string? Name { get; set; } - - /// - /// The file extension. - /// - [JsonPropertyName("extension")] - public string? Extension { get; set; } - - /// - /// The URL of the file. - /// - [JsonPropertyName("url")] - public string? Url { get; set; } - - /// - /// Serializes this FileProperties into a JSON string. - /// - public string Serialize() + public TableRow WithVerticalCellContentAlignment(VerticalAlignment value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.VerticalCellContentAlignment = value; + return this; } - public FileProperties WithName(string value) + public TableRow WithGridArea(string value) { - this.Name = value; + this.GridArea = value; return this; } - public FileProperties WithExtension(string value) + public TableRow WithFallback(IUnion value) { - this.Extension = value; + this.Fallback = value; return this; } - public FileProperties WithUrl(string value) + public TableRow WithCells(params IList value) { - this.Url = value; + this.Cells = value; return this; } } /// -/// Displays information about a calendar event. +/// Represents a cell in a table row. /// -public class ComEventMicrosoftGraphComponent : CardElement +public class TableCell : CardElement { /// - /// Deserializes a JSON string into an object of type ComEventMicrosoftGraphComponent. + /// Deserializes a JSON string into an object of type TableCell. /// - public static ComEventMicrosoftGraphComponent? Deserialize(string json) + public static TableCell? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **Component**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **TableCell**. /// [JsonPropertyName("type")] - public string Type { get; } = "Component"; + public string Type { get; } = "TableCell"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -14078,7 +17074,7 @@ public class ComEventMicrosoftGraphComponent : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -14090,31 +17086,25 @@ public class ComEventMicrosoftGraphComponent : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } - - /// - /// Controls how the element should be horizontally aligned. - /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -14126,19 +17116,61 @@ public class ComEventMicrosoftGraphComponent : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// Must be **graph.microsoft.com/event**. + /// An Action that will be invoked when the element is tapped or clicked. Action.ShowCard is not supported. /// - [JsonPropertyName("name")] - public string Name { get; } = "graph.microsoft.com/event"; + [JsonPropertyName("selectAction")] + public Action? SelectAction { get; set; } /// - /// The properties of the event. + /// The style of the container. Container styles control the colors of the background, border and text inside the container, in such a way that contrast requirements are always met. /// - [JsonPropertyName("properties")] - public CalendarEventProperties? Properties { get; set; } + [JsonPropertyName("style")] + public ContainerStyle? Style { get; set; } + + /// + /// The layouts associated with the container. The container can dynamically switch from one layout to another as the card's width changes. See [Container layouts](https://adaptivecards.microsoft.com/?topic=container-layouts) for more details. + /// + [JsonPropertyName("layouts")] + public IList? Layouts { get; set; } + + /// + /// Controls if the container should bleed into its parent. A bleeding container extends into its parent's padding. + /// + [JsonPropertyName("bleed")] + public bool? Bleed { get; set; } = false; + + /// + /// The minimum height, in pixels, of the container, in the `px` format. + /// + [JsonPropertyName("minHeight")] + public string? MinHeight { get; set; } + + /// + /// Defines the container's background image. + /// + [JsonPropertyName("backgroundImage")] + public IUnion? BackgroundImage { get; set; } + + /// + /// Controls how the container's content should be vertically aligned. + /// + [JsonPropertyName("verticalContentAlignment")] + public VerticalAlignment? VerticalContentAlignment { get; set; } + + /// + /// Controls if the content of the card is to be rendered left-to-right or right-to-left. + /// + [JsonPropertyName("rtl")] + public bool? Rtl { get; set; } + + /// + /// The maximum height, in pixels, of the container, in the `px` format. When the content of a container exceeds the container's maximum height, a vertical scrollbar is displayed. + /// + [JsonPropertyName("maxHeight")] + public string? MaxHeight { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -14153,7 +17185,18 @@ public class ComEventMicrosoftGraphComponent : CardElement public IUnion? Fallback { get; set; } /// - /// Serializes this ComEventMicrosoftGraphComponent into a JSON string. + /// The items (elements) in the cell. + /// + [JsonPropertyName("items")] + public IList? Items { get; set; } + + public TableCell(params IList items) + { + this.Items = items; + } + + /// + /// Serializes this TableCell into a JSON string. /// public string Serialize() { @@ -14167,172 +17210,273 @@ public string Serialize() ); } - public ComEventMicrosoftGraphComponent WithId(string value) + public TableCell WithKey(string value) + { + this.Key = value; + return this; + } + + public TableCell WithId(string value) { this.Id = value; return this; } - public ComEventMicrosoftGraphComponent WithRequires(HostCapabilities value) + public TableCell WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public ComEventMicrosoftGraphComponent WithLang(string value) + public TableCell WithLang(string value) { this.Lang = value; return this; } - public ComEventMicrosoftGraphComponent WithIsVisible(bool value) + public TableCell WithIsVisible(bool value) { this.IsVisible = value; return this; } - public ComEventMicrosoftGraphComponent WithSeparator(bool value) + public TableCell WithSeparator(bool value) { this.Separator = value; return this; } - public ComEventMicrosoftGraphComponent WithHeight(ElementHeight value) + public TableCell WithHeight(ElementHeight value) { this.Height = value; return this; } - public ComEventMicrosoftGraphComponent WithHorizontalAlignment(HorizontalAlignment value) + public TableCell WithSpacing(Spacing value) { - this.HorizontalAlignment = value; + this.Spacing = value; return this; } - public ComEventMicrosoftGraphComponent WithSpacing(Spacing value) + public TableCell WithTargetWidth(TargetWidth value) { - this.Spacing = value; + this.TargetWidth = value; return this; } - public ComEventMicrosoftGraphComponent WithTargetWidth(TargetWidth value) + public TableCell WithIsSortKey(bool value) { - this.TargetWidth = value; + this.IsSortKey = value; return this; } - public ComEventMicrosoftGraphComponent WithIsSortKey(bool value) + public TableCell WithSelectAction(Action value) { - this.IsSortKey = value; + this.SelectAction = value; return this; } - public ComEventMicrosoftGraphComponent WithProperties(CalendarEventProperties value) + public TableCell WithStyle(ContainerStyle value) { - this.Properties = value; + this.Style = value; return this; } - public ComEventMicrosoftGraphComponent WithGridArea(string value) + public TableCell WithLayouts(params IList value) + { + this.Layouts = value; + return this; + } + + public TableCell WithBleed(bool value) + { + this.Bleed = value; + return this; + } + + public TableCell WithMinHeight(string value) + { + this.MinHeight = value; + return this; + } + + public TableCell WithBackgroundImage(IUnion value) + { + this.BackgroundImage = value; + return this; + } + + public TableCell WithVerticalContentAlignment(VerticalAlignment value) + { + this.VerticalContentAlignment = value; + return this; + } + + public TableCell WithRtl(bool value) + { + this.Rtl = value; + return this; + } + + public TableCell WithMaxHeight(string value) + { + this.MaxHeight = value; + return this; + } + + public TableCell WithGridArea(string value) { this.GridArea = value; return this; } - public ComEventMicrosoftGraphComponent WithFallback(IUnion value) + public TableCell WithFallback(IUnion value) { this.Fallback = value; return this; } + + public TableCell WithItems(params IList value) + { + this.Items = value; + return this; + } } /// -/// The properties of a calendar event. +/// A block of text inside a RichTextBlock element. /// -public class CalendarEventProperties : SerializableObject +public class TextRun : CardElement { /// - /// Deserializes a JSON string into an object of type CalendarEventProperties. + /// Deserializes a JSON string into an object of type TextRun. /// - public static CalendarEventProperties? Deserialize(string json) + public static TextRun? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The ID of the event. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **TextRun**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "TextRun"; + + /// + /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. /// [JsonPropertyName("id")] public string? Id { get; set; } /// - /// The title of the event. + /// The locale associated with the element. /// - [JsonPropertyName("title")] - public string? Title { get; set; } + [JsonPropertyName("lang")] + public string? Lang { get; set; } + + /// + /// Controls the visibility of the element. + /// + [JsonPropertyName("isVisible")] + public bool? IsVisible { get; set; } = true; + + /// + /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. + /// + [JsonPropertyName("isSortKey")] + public bool? IsSortKey { get; set; } = false; + + /// + /// The text to display. A subset of markdown is supported. + /// + [JsonPropertyName("text")] + public string? Text { get; set; } + + /// + /// The size of the text. + /// + [JsonPropertyName("size")] + public TextSize? Size { get; set; } + + /// + /// The weight of the text. + /// + [JsonPropertyName("weight")] + public TextWeight? Weight { get; set; } /// - /// The start date and time of the event. + /// The color of the text. /// - [JsonPropertyName("start")] - public string? Start { get; set; } + [JsonPropertyName("color")] + public TextColor? Color { get; set; } /// - /// The end date and time of the event. + /// Controls whether the text should be renderer using a subtler variant of the select color. /// - [JsonPropertyName("end")] - public string? End { get; set; } + [JsonPropertyName("isSubtle")] + public bool? IsSubtle { get; set; } /// - /// The status of the event. + /// The type of font to use for rendering. /// - [JsonPropertyName("status")] - public string? Status { get; set; } + [JsonPropertyName("fontType")] + public FontType? FontType { get; set; } /// - /// The locations of the event. + /// Controls if the text should be italicized. /// - [JsonPropertyName("locations")] - public IList? Locations { get; set; } + [JsonPropertyName("italic")] + public bool? Italic { get; set; } = false; /// - /// The URL of the online meeting. + /// Controls if the text should be struck through. /// - [JsonPropertyName("onlineMeetingUrl")] - public string? OnlineMeetingUrl { get; set; } + [JsonPropertyName("strikethrough")] + public bool? Strikethrough { get; set; } = false; /// - /// Indicates if the event is all day. + /// Controls if the text should be highlighted. /// - [JsonPropertyName("isAllDay")] - public bool? IsAllDay { get; set; } + [JsonPropertyName("highlight")] + public bool? Highlight { get; set; } = false; /// - /// The extension of the event. + /// Controls if the text should be underlined. /// - [JsonPropertyName("extension")] - public string? Extension { get; set; } + [JsonPropertyName("underline")] + public bool? Underline { get; set; } = false; /// - /// The URL of the event. + /// An Action that will be invoked when the text is tapped or clicked. Action.ShowCard is not supported. /// - [JsonPropertyName("url")] - public string? Url { get; set; } + [JsonPropertyName("selectAction")] + public Action? SelectAction { get; set; } /// - /// The attendees of the event. + /// The area of a Layout.AreaGrid layout in which an element should be displayed. /// - [JsonPropertyName("attendees")] - public IList? Attendees { get; set; } + [JsonPropertyName("grid.area")] + public string? GridArea { get; set; } /// - /// The organizer of the event. + /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. /// - [JsonPropertyName("organizer")] - public CalendarEventAttendee? Organizer { get; set; } + [JsonPropertyName("fallback")] + public IUnion? Fallback { get; set; } + + public TextRun(string text) + { + this.Text = text; + } /// - /// Serializes this CalendarEventProperties into a JSON string. + /// Serializes this TextRun into a JSON string. /// public string Serialize() { @@ -14346,186 +17490,139 @@ public string Serialize() ); } - public CalendarEventProperties WithId(string value) + public TextRun WithKey(string value) { - this.Id = value; + this.Key = value; return this; } - public CalendarEventProperties WithTitle(string value) + public TextRun WithId(string value) { - this.Title = value; + this.Id = value; return this; } - public CalendarEventProperties WithStart(string value) + public TextRun WithLang(string value) { - this.Start = value; + this.Lang = value; return this; } - public CalendarEventProperties WithEnd(string value) + public TextRun WithIsVisible(bool value) { - this.End = value; + this.IsVisible = value; return this; } - public CalendarEventProperties WithStatus(string value) + public TextRun WithIsSortKey(bool value) { - this.Status = value; + this.IsSortKey = value; return this; } - public CalendarEventProperties WithLocations(params IList value) + public TextRun WithText(string value) { - this.Locations = value; + this.Text = value; return this; } - public CalendarEventProperties WithOnlineMeetingUrl(string value) + public TextRun WithSize(TextSize value) { - this.OnlineMeetingUrl = value; + this.Size = value; return this; } - public CalendarEventProperties WithIsAllDay(bool value) + public TextRun WithWeight(TextWeight value) { - this.IsAllDay = value; + this.Weight = value; return this; } - public CalendarEventProperties WithExtension(string value) + public TextRun WithColor(TextColor value) { - this.Extension = value; + this.Color = value; return this; } - public CalendarEventProperties WithUrl(string value) + public TextRun WithIsSubtle(bool value) { - this.Url = value; + this.IsSubtle = value; return this; } - public CalendarEventProperties WithAttendees(params IList value) + public TextRun WithFontType(FontType value) { - this.Attendees = value; + this.FontType = value; return this; } - public CalendarEventProperties WithOrganizer(CalendarEventAttendee value) + public TextRun WithItalic(bool value) { - this.Organizer = value; + this.Italic = value; return this; } -} - -/// -/// Represents a calendar event attendee. -/// -public class CalendarEventAttendee : SerializableObject -{ - /// - /// Deserializes a JSON string into an object of type CalendarEventAttendee. - /// - public static CalendarEventAttendee? Deserialize(string json) - { - return JsonSerializer.Deserialize(json); - } - - /// - /// The name of the attendee. - /// - [JsonPropertyName("name")] - public string? Name { get; set; } - - /// - /// The email address of the attendee. - /// - [JsonPropertyName("email")] - public string? Email { get; set; } - - /// - /// The title of the attendee. - /// - [JsonPropertyName("title")] - public string? Title { get; set; } - - /// - /// The type of the attendee. - /// - [JsonPropertyName("type")] - public string? Type { get; set; } - - /// - /// The status of the attendee. - /// - [JsonPropertyName("status")] - public string? Status { get; set; } - /// - /// Serializes this CalendarEventAttendee into a JSON string. - /// - public string Serialize() + public TextRun WithStrikethrough(bool value) { - return JsonSerializer.Serialize( - this, - new JsonSerializerOptions - { - WriteIndented = true, - DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull - } - ); + this.Strikethrough = value; + return this; } - public CalendarEventAttendee WithName(string value) + public TextRun WithHighlight(bool value) { - this.Name = value; + this.Highlight = value; return this; } - public CalendarEventAttendee WithEmail(string value) + public TextRun WithUnderline(bool value) { - this.Email = value; + this.Underline = value; return this; } - public CalendarEventAttendee WithTitle(string value) + public TextRun WithSelectAction(Action value) { - this.Title = value; + this.SelectAction = value; return this; } - public CalendarEventAttendee WithType(string value) + public TextRun WithGridArea(string value) { - this.Type = value; + this.GridArea = value; return this; } - public CalendarEventAttendee WithStatus(string value) + public TextRun WithFallback(IUnion value) { - this.Status = value; + this.Fallback = value; return this; } } /// -/// A page inside a Carousel element. +/// An inline icon inside a RichTextBlock element. /// -public class CarouselPage : CardElement +public class IconRun : CardElement { /// - /// Deserializes a JSON string into an object of type CarouselPage. + /// Deserializes a JSON string into an object of type IconRun. /// - public static CarouselPage? Deserialize(string json) + public static IconRun? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **CarouselPage**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **IconRun**. /// [JsonPropertyName("type")] - public string Type { get; } = "CarouselPage"; + public string Type { get; } = "IconRun"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -14533,12 +17630,6 @@ public class CarouselPage : CardElement [JsonPropertyName("id")] public string? Id { get; set; } - /// - /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). - /// - [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } - /// /// The locale associated with the element. /// @@ -14549,85 +17640,43 @@ public class CarouselPage : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } - - /// - /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. - /// - [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } - - /// - /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). - /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// An Action that will be invoked when the element is tapped or clicked. Action.ShowCard is not supported. - /// - [JsonPropertyName("selectAction")] - public Action? SelectAction { get; set; } - - /// - /// The style of the container. Container styles control the colors of the background, border and text inside the container, in such a way that contrast requirements are always met. - /// - [JsonPropertyName("style")] - public ContainerStyle? Style { get; set; } - - /// - /// Controls if a border should be displayed around the container. - /// - [JsonPropertyName("showBorder")] - public bool? ShowBorder { get; set; } - - /// - /// Controls if the container should have rounded corners. - /// - [JsonPropertyName("roundedCorners")] - public bool? RoundedCorners { get; set; } - - /// - /// The layouts associated with the container. The container can dynamically switch from one layout to another as the card's width changes. See [Container layouts](https://adaptivecards.microsoft.com/?topic=container-layouts) for more details. - /// - [JsonPropertyName("layouts")] - public IList? Layouts { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// The minimum height, in pixels, of the container, in the `px` format. + /// The name of the inline icon to display. /// - [JsonPropertyName("minHeight")] - public string? MinHeight { get; set; } + [JsonPropertyName("name")] + public string? Name { get; set; } /// - /// Defines the container's background image. + /// The size of the inline icon. /// - [JsonPropertyName("backgroundImage")] - public IUnion? BackgroundImage { get; set; } + [JsonPropertyName("size")] + public SizeEnum? Size { get; set; } = SizeEnum.Default; /// - /// Controls how the container's content should be vertically aligned. + /// The style of the inline icon. /// - [JsonPropertyName("verticalContentAlignment")] - public VerticalAlignment? VerticalContentAlignment { get; set; } + [JsonPropertyName("style")] + public IconStyle? Style { get; set; } = IconStyle.Regular; /// - /// Controls if the content of the card is to be rendered left-to-right or right-to-left. + /// The color of the inline icon. /// - [JsonPropertyName("rtl")] - public bool? Rtl { get; set; } + [JsonPropertyName("color")] + public TextColor? Color { get; set; } = TextColor.Default; /// - /// The maximum height, in pixels, of the container, in the `px` format. When the content of a container exceeds the container's maximum height, a vertical scrollbar is displayed. + /// An Action that will be invoked when the inline icon is tapped or clicked. Action.ShowCard is not supported. /// - [JsonPropertyName("maxHeight")] - public string? MaxHeight { get; set; } + [JsonPropertyName("selectAction")] + public Action? SelectAction { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -14642,18 +17691,7 @@ public class CarouselPage : CardElement public IUnion? Fallback { get; set; } /// - /// The elements in the page. - /// - [JsonPropertyName("items")] - public IList? Items { get; set; } - - public CarouselPage(params IList items) - { - this.Items = items; - } - - /// - /// Serializes this CarouselPage into a JSON string. + /// Serializes this IconRun into a JSON string. /// public string Serialize() { @@ -14667,145 +17705,103 @@ public string Serialize() ); } - public CarouselPage WithId(string value) + public IconRun WithKey(string value) { - this.Id = value; + this.Key = value; return this; } - public CarouselPage WithRequires(HostCapabilities value) + public IconRun WithId(string value) { - this.Requires = value; + this.Id = value; return this; } - public CarouselPage WithLang(string value) + public IconRun WithLang(string value) { this.Lang = value; return this; } - public CarouselPage WithIsVisible(bool value) + public IconRun WithIsVisible(bool value) { this.IsVisible = value; return this; } - public CarouselPage WithHeight(ElementHeight value) - { - this.Height = value; - return this; - } - - public CarouselPage WithTargetWidth(TargetWidth value) - { - this.TargetWidth = value; - return this; - } - - public CarouselPage WithIsSortKey(bool value) + public IconRun WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public CarouselPage WithSelectAction(Action value) - { - this.SelectAction = value; - return this; - } - - public CarouselPage WithStyle(ContainerStyle value) - { - this.Style = value; - return this; - } - - public CarouselPage WithShowBorder(bool value) - { - this.ShowBorder = value; - return this; - } - - public CarouselPage WithRoundedCorners(bool value) - { - this.RoundedCorners = value; - return this; - } - - public CarouselPage WithLayouts(params IList value) - { - this.Layouts = value; - return this; - } - - public CarouselPage WithMinHeight(string value) + public IconRun WithName(string value) { - this.MinHeight = value; + this.Name = value; return this; } - public CarouselPage WithBackgroundImage(IUnion value) + public IconRun WithSize(SizeEnum value) { - this.BackgroundImage = value; + this.Size = value; return this; } - public CarouselPage WithVerticalContentAlignment(VerticalAlignment value) + public IconRun WithStyle(IconStyle value) { - this.VerticalContentAlignment = value; + this.Style = value; return this; } - public CarouselPage WithRtl(bool value) + public IconRun WithColor(TextColor value) { - this.Rtl = value; + this.Color = value; return this; } - public CarouselPage WithMaxHeight(string value) + public IconRun WithSelectAction(Action value) { - this.MaxHeight = value; + this.SelectAction = value; return this; } - public CarouselPage WithGridArea(string value) + public IconRun WithGridArea(string value) { this.GridArea = value; return this; } - public CarouselPage WithFallback(IUnion value) + public IconRun WithFallback(IUnion value) { this.Fallback = value; return this; } - - public CarouselPage WithItems(params IList value) - { - this.Items = value; - return this; - } } /// -/// Represents a row of cells in a table. +/// An inline image inside a RichTextBlock element. /// -public class TableRow : CardElement +public class ImageRun : CardElement { /// - /// Deserializes a JSON string into an object of type TableRow. + /// Deserializes a JSON string into an object of type ImageRun. /// - public static TableRow? Deserialize(string json) + public static ImageRun? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **TableRow**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Must be **ImageRun**. /// [JsonPropertyName("type")] - public string Type { get; } = "TableRow"; + public string Type { get; } = "ImageRun"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -14813,12 +17809,6 @@ public class TableRow : CardElement [JsonPropertyName("id")] public string? Id { get; set; } - /// - /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). - /// - [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } - /// /// The locale associated with the element. /// @@ -14829,73 +17819,43 @@ public class TableRow : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } - - /// - /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. - /// - [JsonPropertyName("separator")] - public bool? Separator { get; set; } - - /// - /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. - /// - [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } - - /// - /// Controls how the element should be horizontally aligned. - /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } - - /// - /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. - /// - [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } - - /// - /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). - /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// - /// Controls if a border should be displayed around the container. + /// The URL (or Base64-encoded Data URI) of the image. Acceptable formats are PNG, JPEG, GIF and SVG. /// - [JsonPropertyName("showBorder")] - public bool? ShowBorder { get; set; } + [JsonPropertyName("url")] + public string? Url { get; set; } /// - /// Controls if the container should have rounded corners. + /// The size of the inline image. /// - [JsonPropertyName("roundedCorners")] - public bool? RoundedCorners { get; set; } + [JsonPropertyName("size")] + public SizeEnum? Size { get; set; } = SizeEnum.Default; /// - /// The style of the container. Container styles control the colors of the background, border and text inside the container, in such a way that contrast requirements are always met. + /// The style of the inline image. /// [JsonPropertyName("style")] - public ContainerStyle? Style { get; set; } + public ImageStyle? Style { get; set; } = ImageStyle.Default; /// - /// Controls how the content of every cell in the row should be horizontally aligned by default. This property overrides the horizontalCellContentAlignment property of the table and columns. + /// An Action that will be invoked when the image is tapped or clicked. Action.ShowCard is not supported. /// - [JsonPropertyName("horizontalCellContentAlignment")] - public HorizontalAlignment? HorizontalCellContentAlignment { get; set; } + [JsonPropertyName("selectAction")] + public Action? SelectAction { get; set; } /// - /// Controls how the content of every cell in the row should be vertically aligned by default. This property overrides the verticalCellContentAlignment property of the table and columns. + /// A set of theme-specific image URLs. /// - [JsonPropertyName("verticalCellContentAlignment")] - public VerticalAlignment? VerticalCellContentAlignment { get; set; } + [JsonPropertyName("themedUrls")] + public IList? ThemedUrls { get; set; } /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. @@ -14910,13 +17870,7 @@ public class TableRow : CardElement public IUnion? Fallback { get; set; } /// - /// The cells in the row. - /// - [JsonPropertyName("cells")] - public IList? Cells { get; set; } - - /// - /// Serializes this TableRow into a JSON string. + /// Serializes this ImageRun into a JSON string. /// public string Serialize() { @@ -14930,133 +17884,103 @@ public string Serialize() ); } - public TableRow WithId(string value) + public ImageRun WithKey(string value) { - this.Id = value; + this.Key = value; return this; } - public TableRow WithRequires(HostCapabilities value) + public ImageRun WithId(string value) { - this.Requires = value; + this.Id = value; return this; } - public TableRow WithLang(string value) + public ImageRun WithLang(string value) { this.Lang = value; return this; } - public TableRow WithIsVisible(bool value) + public ImageRun WithIsVisible(bool value) { this.IsVisible = value; return this; } - public TableRow WithSeparator(bool value) - { - this.Separator = value; - return this; - } - - public TableRow WithHeight(ElementHeight value) - { - this.Height = value; - return this; - } - - public TableRow WithHorizontalAlignment(HorizontalAlignment value) - { - this.HorizontalAlignment = value; - return this; - } - - public TableRow WithSpacing(Spacing value) - { - this.Spacing = value; - return this; - } - - public TableRow WithTargetWidth(TargetWidth value) - { - this.TargetWidth = value; - return this; - } - - public TableRow WithIsSortKey(bool value) + public ImageRun WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public TableRow WithShowBorder(bool value) + public ImageRun WithUrl(string value) { - this.ShowBorder = value; + this.Url = value; return this; } - public TableRow WithRoundedCorners(bool value) + public ImageRun WithSize(SizeEnum value) { - this.RoundedCorners = value; + this.Size = value; return this; } - public TableRow WithStyle(ContainerStyle value) + public ImageRun WithStyle(ImageStyle value) { this.Style = value; return this; } - public TableRow WithHorizontalCellContentAlignment(HorizontalAlignment value) + public ImageRun WithSelectAction(Action value) { - this.HorizontalCellContentAlignment = value; + this.SelectAction = value; return this; } - public TableRow WithVerticalCellContentAlignment(VerticalAlignment value) + public ImageRun WithThemedUrls(params IList value) { - this.VerticalCellContentAlignment = value; + this.ThemedUrls = value; return this; } - public TableRow WithGridArea(string value) + public ImageRun WithGridArea(string value) { this.GridArea = value; return this; } - public TableRow WithFallback(IUnion value) + public ImageRun WithFallback(IUnion value) { this.Fallback = value; return this; } - - public TableRow WithCells(params IList value) - { - this.Cells = value; - return this; - } } /// -/// Represents a cell in a table row. +/// A column in a ColumnSet element. /// -public class TableCell : CardElement +public class Column : CardElement { /// - /// Deserializes a JSON string into an object of type TableCell. + /// Deserializes a JSON string into an object of type Column. /// - public static TableCell? Deserialize(string json) + public static Column? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **TableCell**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Optional. If specified, must be **Column**. /// [JsonPropertyName("type")] - public string Type { get; } = "TableCell"; + public string Type { get; } = "Column"; /// /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. @@ -15068,7 +17992,7 @@ public class TableCell : CardElement /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). /// [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } + public HostCapabilities? Requires { get; set; } = new HostCapabilities(); /// /// The locale associated with the element. @@ -15080,25 +18004,31 @@ public class TableCell : CardElement /// Controls the visibility of the element. /// [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + public bool? IsVisible { get; set; } = true; /// /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. /// [JsonPropertyName("separator")] - public bool? Separator { get; set; } + public bool? Separator { get; set; } = false; /// /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. /// [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + public ElementHeight? Height { get; set; } = ElementHeight.Auto; + + /// + /// Controls how the element should be horizontally aligned. + /// + [JsonPropertyName("horizontalAlignment")] + public HorizontalAlignment? HorizontalAlignment { get; set; } /// /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. /// [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public Spacing? Spacing { get; set; } = Spacing.Default; /// /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). @@ -15110,7 +18040,7 @@ public class TableCell : CardElement /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. /// [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public bool? IsSortKey { get; set; } = false; /// /// An Action that will be invoked when the element is tapped or clicked. Action.ShowCard is not supported. @@ -15124,6 +18054,18 @@ public class TableCell : CardElement [JsonPropertyName("style")] public ContainerStyle? Style { get; set; } + /// + /// Controls if a border should be displayed around the container. + /// + [JsonPropertyName("showBorder")] + public bool? ShowBorder { get; set; } = false; + + /// + /// Controls if the container should have rounded corners. + /// + [JsonPropertyName("roundedCorners")] + public bool? RoundedCorners { get; set; } = false; + /// /// The layouts associated with the container. The container can dynamically switch from one layout to another as the card's width changes. See [Container layouts](https://adaptivecards.microsoft.com/?topic=container-layouts) for more details. /// @@ -15134,7 +18076,7 @@ public class TableCell : CardElement /// Controls if the container should bleed into its parent. A bleeding container extends into its parent's padding. /// [JsonPropertyName("bleed")] - public bool? Bleed { get; set; } + public bool? Bleed { get; set; } = false; /// /// The minimum height, in pixels, of the container, in the `px` format. @@ -15166,6 +18108,12 @@ public class TableCell : CardElement [JsonPropertyName("maxHeight")] public string? MaxHeight { get; set; } + /// + /// The width of the column. If expressed as a number, represents the relative weight of the column in the set. If expressed as a string, `auto` will automatically adjust the column's width according to its content, `stretch` will make the column use the remaining horizontal space (shared with other columns with width set to `stretch`) and using the `px` format will give the column an explicit width in pixels. + /// + [JsonPropertyName("width")] + public IUnion? Width { get; set; } + /// /// The area of a Layout.AreaGrid layout in which an element should be displayed. /// @@ -15179,18 +18127,18 @@ public class TableCell : CardElement public IUnion? Fallback { get; set; } /// - /// The items (elements) in the cell. + /// The elements in the column. /// [JsonPropertyName("items")] public IList? Items { get; set; } - public TableCell(params IList items) + public Column(params IList items) { this.Items = items; } /// - /// Serializes this TableCell into a JSON string. + /// Serializes this Column into a JSON string. /// public string Serialize() { @@ -15204,127 +18152,157 @@ public string Serialize() ); } - public TableCell WithId(string value) + public Column WithKey(string value) + { + this.Key = value; + return this; + } + + public Column WithId(string value) { this.Id = value; return this; } - public TableCell WithRequires(HostCapabilities value) + public Column WithRequires(HostCapabilities value) { this.Requires = value; return this; } - public TableCell WithLang(string value) + public Column WithLang(string value) { this.Lang = value; return this; } - public TableCell WithIsVisible(bool value) + public Column WithIsVisible(bool value) { this.IsVisible = value; return this; } - public TableCell WithSeparator(bool value) + public Column WithSeparator(bool value) { this.Separator = value; return this; } - public TableCell WithHeight(ElementHeight value) + public Column WithHeight(ElementHeight value) { this.Height = value; return this; } - public TableCell WithSpacing(Spacing value) + public Column WithHorizontalAlignment(HorizontalAlignment value) + { + this.HorizontalAlignment = value; + return this; + } + + public Column WithSpacing(Spacing value) { this.Spacing = value; return this; } - public TableCell WithTargetWidth(TargetWidth value) + public Column WithTargetWidth(TargetWidth value) { this.TargetWidth = value; return this; } - public TableCell WithIsSortKey(bool value) + public Column WithIsSortKey(bool value) { this.IsSortKey = value; return this; } - public TableCell WithSelectAction(Action value) + public Column WithSelectAction(Action value) { this.SelectAction = value; return this; } - public TableCell WithStyle(ContainerStyle value) + public Column WithStyle(ContainerStyle value) { this.Style = value; return this; } - public TableCell WithLayouts(params IList value) + public Column WithShowBorder(bool value) + { + this.ShowBorder = value; + return this; + } + + public Column WithRoundedCorners(bool value) + { + this.RoundedCorners = value; + return this; + } + + public Column WithLayouts(params IList value) { this.Layouts = value; return this; } - public TableCell WithBleed(bool value) + public Column WithBleed(bool value) { this.Bleed = value; return this; } - public TableCell WithMinHeight(string value) + public Column WithMinHeight(string value) { this.MinHeight = value; return this; } - public TableCell WithBackgroundImage(IUnion value) + public Column WithBackgroundImage(IUnion value) { this.BackgroundImage = value; return this; } - public TableCell WithVerticalContentAlignment(VerticalAlignment value) + public Column WithVerticalContentAlignment(VerticalAlignment value) { this.VerticalContentAlignment = value; return this; } - public TableCell WithRtl(bool value) + public Column WithRtl(bool value) { this.Rtl = value; return this; } - public TableCell WithMaxHeight(string value) + public Column WithMaxHeight(string value) { this.MaxHeight = value; return this; } - public TableCell WithGridArea(string value) + public Column WithWidth(IUnion value) + { + this.Width = value; + return this; + } + + public Column WithGridArea(string value) { this.GridArea = value; return this; } - public TableCell WithFallback(IUnion value) + public Column WithFallback(IUnion value) { this.Fallback = value; return this; } - public TableCell WithItems(params IList value) + public Column WithItems(params IList value) { this.Items = value; return this; @@ -15332,133 +18310,98 @@ public TableCell WithItems(params IList value) } /// -/// A block of text inside a RichTextBlock element. +/// Represents the data of an Action.Submit. /// -public class TextRun : CardElement +public class SubmitActionData : SerializableObject { /// - /// Deserializes a JSON string into an object of type TextRun. + /// Deserializes a JSON string into an object of type SubmitActionData. /// - public static TextRun? Deserialize(string json) + public static SubmitActionData? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **TextRun**. - /// - [JsonPropertyName("type")] - public string Type { get; } = "TextRun"; - - /// - /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. - /// - [JsonPropertyName("id")] - public string? Id { get; set; } - - /// - /// The locale associated with the element. - /// - [JsonPropertyName("lang")] - public string? Lang { get; set; } - - /// - /// Controls the visibility of the element. - /// - [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } - - /// - /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. - /// - [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } - - /// - /// The text to display. A subset of markdown is supported. - /// - [JsonPropertyName("text")] - public string? Text { get; set; } - - /// - /// The size of the text. - /// - [JsonPropertyName("size")] - public TextSize? Size { get; set; } - - /// - /// The weight of the text. - /// - [JsonPropertyName("weight")] - public TextWeight? Weight { get; set; } - - /// - /// The color of the text. - /// - [JsonPropertyName("color")] - public TextColor? Color { get; set; } - - /// - /// Controls whether the text should be renderer using a subtler variant of the select color. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("isSubtle")] - public bool? IsSubtle { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The type of font to use for rendering. + /// Defines the optional Teams-specific portion of the action's data. /// - [JsonPropertyName("fontType")] - public FontType? FontType { get; set; } + [JsonPropertyName("msteams")] + public object? Msteams { get; set; } /// - /// Controls if the text should be italicized. + /// Serializes this SubmitActionData into a JSON string. /// - [JsonPropertyName("italic")] - public bool? Italic { get; set; } + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } - /// - /// Controls if the text should be struck through. - /// - [JsonPropertyName("strikethrough")] - public bool? Strikethrough { get; set; } + public SubmitActionData WithKey(string value) + { + this.Key = value; + return this; + } - /// - /// Controls if the text should be highlighted. - /// - [JsonPropertyName("highlight")] - public bool? Highlight { get; set; } + public SubmitActionData WithMsteams(object value) + { + this.Msteams = value; + return this; + } + [JsonExtensionData] + public IDictionary NonSchemaProperties { get; set; } = new Dictionary(); +} +/// +/// Represents Teams-specific data in an Action.Submit to send an Instant Message back to the Bot. +/// +public class ImBackSubmitActionData : SerializableObject +{ /// - /// Controls if the text should be underlined. + /// Deserializes a JSON string into an object of type ImBackSubmitActionData. /// - [JsonPropertyName("underline")] - public bool? Underline { get; set; } + public static ImBackSubmitActionData? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } /// - /// An Action that will be invoked when the text is tapped or clicked. Action.ShowCard is not supported. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("selectAction")] - public Action? SelectAction { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The area of a Layout.AreaGrid layout in which an element should be displayed. + /// Must be **imBack**. /// - [JsonPropertyName("grid.area")] - public string? GridArea { get; set; } + [JsonPropertyName("type")] + public string Type { get; } = "imBack"; /// - /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// The value that will be sent to the Bot. /// - [JsonPropertyName("fallback")] - public IUnion? Fallback { get; set; } + [JsonPropertyName("value")] + public string? Value { get; set; } - public TextRun(string text) + public ImBackSubmitActionData(string value) { - this.Text = text; + this.Value = value; } /// - /// Serializes this TextRun into a JSON string. + /// Serializes this ImBackSubmitActionData into a JSON string. /// public string Serialize() { @@ -15472,196 +18415,328 @@ public string Serialize() ); } - public TextRun WithId(string value) + public ImBackSubmitActionData WithKey(string value) { - this.Id = value; + this.Key = value; return this; } - public TextRun WithLang(string value) + public ImBackSubmitActionData WithValue(string value) { - this.Lang = value; + this.Value = value; return this; } +} - public TextRun WithIsVisible(bool value) +/// +/// Represents Teams-specific data in an Action.Submit to make an Invoke request to the Bot. +/// +public class InvokeSubmitActionData : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type InvokeSubmitActionData. + /// + public static InvokeSubmitActionData? Deserialize(string json) { - this.IsVisible = value; - return this; + return JsonSerializer.Deserialize(json); } - public TextRun WithIsSortKey(bool value) - { - this.IsSortKey = value; - return this; - } + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } - public TextRun WithText(string value) + /// + /// Must be **invoke**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "invoke"; + + /// + /// The object to send to the Bot with the Invoke request. Can be strongly typed as one of the below values to trigger a specific action in Teams. + /// + [JsonPropertyName("value")] + public IUnion? Value { get; set; } + + public InvokeSubmitActionData(IUnion value) { - this.Text = value; - return this; + this.Value = value; } - public TextRun WithSize(TextSize value) + /// + /// Serializes this InvokeSubmitActionData into a JSON string. + /// + public string Serialize() { - this.Size = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public TextRun WithWeight(TextWeight value) + public InvokeSubmitActionData WithKey(string value) { - this.Weight = value; + this.Key = value; return this; } - public TextRun WithColor(TextColor value) + public InvokeSubmitActionData WithValue(IUnion value) { - this.Color = value; + this.Value = value; return this; } +} - public TextRun WithIsSubtle(bool value) +/// +/// Data for invoking a collaboration stage action. +/// +public class CollabStageInvokeDataValue : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type CollabStageInvokeDataValue. + /// + public static CollabStageInvokeDataValue? Deserialize(string json) { - this.IsSubtle = value; - return this; + return JsonSerializer.Deserialize(json); } - public TextRun WithFontType(FontType value) + /// + /// Must be **tab/tabInfoAction**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "tab/tabInfoAction"; + + /// + /// Provides information about the iFrame content, rendered in the collab stage popout window. + /// + [JsonPropertyName("tabInfo")] + public TabInfo? TabInfo { get; set; } + + /// + /// Serializes this CollabStageInvokeDataValue into a JSON string. + /// + public string Serialize() { - this.FontType = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public TextRun WithItalic(bool value) + public CollabStageInvokeDataValue WithTabInfo(TabInfo value) { - this.Italic = value; + this.TabInfo = value; return this; } +} - public TextRun WithStrikethrough(bool value) +/// +/// Represents information about the iFrame content, rendered in the collab stage popout window. +/// +public class TabInfo : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type TabInfo. + /// + public static TabInfo? Deserialize(string json) { - this.Strikethrough = value; - return this; + return JsonSerializer.Deserialize(json); } - public TextRun WithHighlight(bool value) + /// + /// The name for the content. This will be displayed as the title of the window hosting the iFrame. + /// + [JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// The URL to open in an iFrame. + /// + [JsonPropertyName("contentUrl")] + public string? ContentUrl { get; set; } + + /// + /// The unique entity id for this content (e.g., random UUID). + /// + [JsonPropertyName("entityId")] + public string? EntityId { get; set; } + + /// + /// An optional website URL to the content, allowing users to open this content in the browser (if they prefer). + /// + [JsonPropertyName("websiteUrl")] + public string? WebsiteUrl { get; set; } + + /// + /// Serializes this TabInfo into a JSON string. + /// + public string Serialize() { - this.Highlight = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public TextRun WithUnderline(bool value) + public TabInfo WithName(string value) { - this.Underline = value; + this.Name = value; return this; } - public TextRun WithSelectAction(Action value) + public TabInfo WithContentUrl(string value) { - this.SelectAction = value; + this.ContentUrl = value; return this; } - public TextRun WithGridArea(string value) + public TabInfo WithEntityId(string value) { - this.GridArea = value; + this.EntityId = value; return this; } - public TextRun WithFallback(IUnion value) + public TabInfo WithWebsiteUrl(string value) { - this.Fallback = value; + this.WebsiteUrl = value; return this; } } /// -/// An inline icon inside a RichTextBlock element. +/// Represents Teams-specific data in an Action.Submit to send a message back to the Bot. /// -public class IconRun : CardElement +public class MessageBackSubmitActionData : SerializableObject { /// - /// Deserializes a JSON string into an object of type IconRun. + /// Deserializes a JSON string into an object of type MessageBackSubmitActionData. /// - public static IconRun? Deserialize(string json) + public static MessageBackSubmitActionData? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **IconRun**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("type")] - public string Type { get; } = "IconRun"; + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. + /// Must be **messageBack**. /// - [JsonPropertyName("id")] - public string? Id { get; set; } + [JsonPropertyName("type")] + public string Type { get; } = "messageBack"; /// - /// The locale associated with the element. + /// The text that will be sent to the Bot. /// - [JsonPropertyName("lang")] - public string? Lang { get; set; } + [JsonPropertyName("text")] + public string? Text { get; set; } /// - /// Controls the visibility of the element. + /// The optional text that will be displayed as a new message in the conversation, as if the end-user sent it. `displayText` is not sent to the Bot. /// - [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + [JsonPropertyName("displayText")] + public string? DisplayText { get; set; } /// - /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. + /// Optional additional value that will be sent to the Bot. For instance, `value` can encode specific context for the action, such as unique identifiers or a JSON object. /// - [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + [JsonPropertyName("value")] + public object? Value { get; set; } /// - /// The name of the inline icon to display. + /// Serializes this MessageBackSubmitActionData into a JSON string. /// - [JsonPropertyName("name")] - public string? Name { get; set; } + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } - /// - /// The size of the inline icon. - /// - [JsonPropertyName("size")] - public SizeEnum? Size { get; set; } + public MessageBackSubmitActionData WithKey(string value) + { + this.Key = value; + return this; + } - /// - /// The style of the inline icon. - /// - [JsonPropertyName("style")] - public IconStyle? Style { get; set; } + public MessageBackSubmitActionData WithText(string value) + { + this.Text = value; + return this; + } + + public MessageBackSubmitActionData WithDisplayText(string value) + { + this.DisplayText = value; + return this; + } + + public MessageBackSubmitActionData WithValue(object value) + { + this.Value = value; + return this; + } +} +/// +/// Represents Teams-specific data in an Action.Submit to sign in a user. +/// +public class SigninSubmitActionData : SerializableObject +{ /// - /// The color of the inline icon. + /// Deserializes a JSON string into an object of type SigninSubmitActionData. /// - [JsonPropertyName("color")] - public TextColor? Color { get; set; } + public static SigninSubmitActionData? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } /// - /// An Action that will be invoked when the inline icon is tapped or clicked. Action.ShowCard is not supported. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("selectAction")] - public Action? SelectAction { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The area of a Layout.AreaGrid layout in which an element should be displayed. + /// Must be **signin**. /// - [JsonPropertyName("grid.area")] - public string? GridArea { get; set; } + [JsonPropertyName("type")] + public string Type { get; } = "signin"; /// - /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. - /// - [JsonPropertyName("fallback")] - public IUnion? Fallback { get; set; } + /// The URL to redirect the end-user for signing in. + /// + [JsonPropertyName("value")] + public string? Value { get; set; } + + public SigninSubmitActionData(string value) + { + this.Value = value; + } /// - /// Serializes this IconRun into a JSON string. + /// Serializes this SigninSubmitActionData into a JSON string. /// public string Serialize() { @@ -15675,160 +18750,205 @@ public string Serialize() ); } - public IconRun WithId(string value) + public SigninSubmitActionData WithKey(string value) { - this.Id = value; + this.Key = value; return this; } - public IconRun WithLang(string value) + public SigninSubmitActionData WithValue(string value) { - this.Lang = value; + this.Value = value; return this; } +} - public IconRun WithIsVisible(bool value) +/// +/// Represents Teams-specific data in an Action.Submit to open a task module. +/// +public class TaskFetchSubmitActionData : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type TaskFetchSubmitActionData. + /// + public static TaskFetchSubmitActionData? Deserialize(string json) { - this.IsVisible = value; - return this; + return JsonSerializer.Deserialize(json); } - public IconRun WithIsSortKey(bool value) - { - this.IsSortKey = value; - return this; - } + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } - public IconRun WithName(string value) - { - this.Name = value; - return this; - } + /// + /// Must be **task/fetch**. + /// + [JsonPropertyName("type")] + public string Type { get; } = "task/fetch"; - public IconRun WithSize(SizeEnum value) + /// + /// Serializes this TaskFetchSubmitActionData into a JSON string. + /// + public string Serialize() { - this.Size = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public IconRun WithStyle(IconStyle value) + public TaskFetchSubmitActionData WithKey(string value) { - this.Style = value; + this.Key = value; return this; } +} - public IconRun WithColor(TextColor value) +/// +/// Teams-specific properties associated with the action. +/// +public class TeamsSubmitActionProperties : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type TeamsSubmitActionProperties. + /// + public static TeamsSubmitActionProperties? Deserialize(string json) { - this.Color = value; - return this; + return JsonSerializer.Deserialize(json); } - public IconRun WithSelectAction(Action value) + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// Defines how feedback is provided to the end-user when the action is executed. + /// + [JsonPropertyName("feedback")] + public TeamsSubmitActionFeedback? Feedback { get; set; } + + /// + /// Serializes this TeamsSubmitActionProperties into a JSON string. + /// + public string Serialize() { - this.SelectAction = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public IconRun WithGridArea(string value) + public TeamsSubmitActionProperties WithKey(string value) { - this.GridArea = value; + this.Key = value; return this; } - public IconRun WithFallback(IUnion value) + public TeamsSubmitActionProperties WithFeedback(TeamsSubmitActionFeedback value) { - this.Fallback = value; + this.Feedback = value; return this; } } /// -/// An inline image inside a RichTextBlock element. +/// Represents feedback options for an [Action.Submit](https://adaptivecards.microsoft.com/?topic=Action.Submit). /// -public class ImageRun : CardElement +public class TeamsSubmitActionFeedback : SerializableObject { /// - /// Deserializes a JSON string into an object of type ImageRun. + /// Deserializes a JSON string into an object of type TeamsSubmitActionFeedback. /// - public static ImageRun? Deserialize(string json) + public static TeamsSubmitActionFeedback? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Must be **ImageRun**. - /// - [JsonPropertyName("type")] - public string Type { get; } = "ImageRun"; - - /// - /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. - /// - [JsonPropertyName("id")] - public string? Id { get; set; } - - /// - /// The locale associated with the element. - /// - [JsonPropertyName("lang")] - public string? Lang { get; set; } - - /// - /// Controls the visibility of the element. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. + /// Defines if a feedback message should be displayed after the action is executed. /// - [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + [JsonPropertyName("hide")] + public bool? Hide { get; set; } /// - /// The URL (or Base64-encoded Data URI) of the image. Acceptable formats are PNG, JPEG, GIF and SVG. + /// Serializes this TeamsSubmitActionFeedback into a JSON string. /// - [JsonPropertyName("url")] - public string? Url { get; set; } + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } - /// - /// The size of the inline image. - /// - [JsonPropertyName("size")] - public SizeEnum? Size { get; set; } + public TeamsSubmitActionFeedback WithKey(string value) + { + this.Key = value; + return this; + } - /// - /// The style of the inline image. - /// - [JsonPropertyName("style")] - public ImageStyle? Style { get; set; } + public TeamsSubmitActionFeedback WithHide(bool value) + { + this.Hide = value; + return this; + } +} +/// +/// Defines how a card can be refreshed by making a request to the target Bot. +/// +public class RefreshDefinition : SerializableObject +{ /// - /// An Action that will be invoked when the image is tapped or clicked. Action.ShowCard is not supported. + /// Deserializes a JSON string into an object of type RefreshDefinition. /// - [JsonPropertyName("selectAction")] - public Action? SelectAction { get; set; } + public static RefreshDefinition? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } /// - /// A set of theme-specific image URLs. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("themedUrls")] - public IList? ThemedUrls { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The area of a Layout.AreaGrid layout in which an element should be displayed. + /// The Action.Execute action to invoke to refresh the card. /// - [JsonPropertyName("grid.area")] - public string? GridArea { get; set; } + [JsonPropertyName("action")] + public ExecuteAction? Action { get; set; } /// - /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// The list of user Ids for which the card will be automatically refreshed. In Teams, in chats or channels with more than 60 users, the card will automatically refresh only for users specified in the userIds list. Other users will have to manually click on a "refresh" button. In contexts with fewer than 60 users, the card will automatically refresh for all users. /// - [JsonPropertyName("fallback")] - public IUnion? Fallback { get; set; } + [JsonPropertyName("userIds")] + public IList? UserIds { get; set; } /// - /// Serializes this ImageRun into a JSON string. + /// Serializes this RefreshDefinition into a JSON string. /// public string Serialize() { @@ -15842,100 +18962,159 @@ public string Serialize() ); } - public ImageRun WithId(string value) + public RefreshDefinition WithKey(string value) { - this.Id = value; + this.Key = value; return this; } - public ImageRun WithLang(string value) + public RefreshDefinition WithAction(ExecuteAction value) { - this.Lang = value; + this.Action = value; return this; } - public ImageRun WithIsVisible(bool value) + public RefreshDefinition WithUserIds(params IList value) { - this.IsVisible = value; + this.UserIds = value; return this; } +} - public ImageRun WithIsSortKey(bool value) +/// +/// Defines authentication information associated with a card. For more information, refer to the [Bot Framework OAuthCard type](https://docs.microsoft.com/dotnet/api/microsoft.bot.schema.oauthcard) +/// +public class Authentication : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type Authentication. + /// + public static Authentication? Deserialize(string json) { - this.IsSortKey = value; - return this; + return JsonSerializer.Deserialize(json); } - public ImageRun WithUrl(string value) - { - this.Url = value; - return this; - } + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The text that can be displayed to the end user when prompting them to authenticate. + /// + [JsonPropertyName("text")] + public string? Text { get; set; } + + /// + /// The identifier for registered OAuth connection setting information. + /// + [JsonPropertyName("connectionName")] + public string? ConnectionName { get; set; } + + /// + /// The buttons that should be displayed to the user when prompting for authentication. The array MUST contain one button of type “signin”. Other button types are not currently supported. + /// + [JsonPropertyName("buttons")] + public IList? Buttons { get; set; } + + /// + /// Provides information required to enable on-behalf-of single sign-on user authentication. + /// + [JsonPropertyName("tokenExchangeResource")] + public TokenExchangeResource? TokenExchangeResource { get; set; } - public ImageRun WithSize(SizeEnum value) + /// + /// Serializes this Authentication into a JSON string. + /// + public string Serialize() { - this.Size = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public ImageRun WithStyle(ImageStyle value) + public Authentication WithKey(string value) { - this.Style = value; + this.Key = value; return this; } - public ImageRun WithSelectAction(Action value) + public Authentication WithText(string value) { - this.SelectAction = value; + this.Text = value; return this; } - public ImageRun WithThemedUrls(params IList value) + public Authentication WithConnectionName(string value) { - this.ThemedUrls = value; + this.ConnectionName = value; return this; } - public ImageRun WithGridArea(string value) + public Authentication WithButtons(params IList value) { - this.GridArea = value; + this.Buttons = value; return this; } - public ImageRun WithFallback(IUnion value) + public Authentication WithTokenExchangeResource(TokenExchangeResource value) { - this.Fallback = value; + this.TokenExchangeResource = value; return this; } } /// -/// Defines a theme-specific URL. +/// Defines a button as displayed when prompting a user to authenticate. For more information, refer to the [Bot Framework CardAction type](https://docs.microsoft.com/dotnet/api/microsoft.bot.schema.cardaction). /// -public class ThemedUrl : SerializableObject +public class AuthCardButton : SerializableObject { /// - /// Deserializes a JSON string into an object of type ThemedUrl. + /// Deserializes a JSON string into an object of type AuthCardButton. /// - public static ThemedUrl? Deserialize(string json) + public static AuthCardButton? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// The theme this URL applies to. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("theme")] - public ThemeName? Theme { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The URL to use for the associated theme. + /// Must be **signin**. /// - [JsonPropertyName("url")] - public string? Url { get; set; } + [JsonPropertyName("type")] + public string? Type { get; set; } /// - /// Serializes this ThemedUrl into a JSON string. + /// The caption of the button. + /// + [JsonPropertyName("title")] + public string? Title { get; set; } + + /// + /// A URL to an image to display alongside the button’s caption. + /// + [JsonPropertyName("image")] + public string? Image { get; set; } + + /// + /// The value associated with the button. The meaning of value depends on the button’s type. + /// + [JsonPropertyName("value")] + public string? Value { get; set; } + + /// + /// Serializes this AuthCardButton into a JSON string. /// public string Serialize() { @@ -15949,195 +19128,220 @@ public string Serialize() ); } - public ThemedUrl WithTheme(ThemeName value) + public AuthCardButton WithKey(string value) { - this.Theme = value; + this.Key = value; return this; } - public ThemedUrl WithUrl(string value) + public AuthCardButton WithType(string value) { - this.Url = value; + this.Type = value; + return this; + } + + public AuthCardButton WithTitle(string value) + { + this.Title = value; + return this; + } + + public AuthCardButton WithImage(string value) + { + this.Image = value; + return this; + } + + public AuthCardButton WithValue(string value) + { + this.Value = value; return this; } } /// -/// A column in a ColumnSet element. +/// Defines information required to enable on-behalf-of single sign-on user authentication. For more information, refer to the [Bot Framework TokenExchangeResource type](https://docs.microsoft.com/dotnet/api/microsoft.bot.schema.tokenexchangeresource) /// -public class Column : CardElement +public class TokenExchangeResource : SerializableObject { /// - /// Deserializes a JSON string into an object of type Column. + /// Deserializes a JSON string into an object of type TokenExchangeResource. /// - public static Column? Deserialize(string json) + public static TokenExchangeResource? Deserialize(string json) { - return JsonSerializer.Deserialize(json); + return JsonSerializer.Deserialize(json); } /// - /// Optional. If specified, must be **Column**. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("type")] - public string Type { get; } = "Column"; + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// A unique identifier for the element or action. Input elements must have an id, otherwise they will not be validated and their values will not be sent to the Bot. + /// The unique identified of this token exchange instance. /// [JsonPropertyName("id")] public string? Id { get; set; } /// - /// A list of capabilities the element requires the host application to support. If the host application doesn't support at least one of the listed capabilities, the element is not rendered (or its fallback is rendered if provided). - /// - [JsonPropertyName("requires")] - public HostCapabilities? Requires { get; set; } - - /// - /// The locale associated with the element. - /// - [JsonPropertyName("lang")] - public string? Lang { get; set; } - - /// - /// Controls the visibility of the element. - /// - [JsonPropertyName("isVisible")] - public bool? IsVisible { get; set; } - - /// - /// Controls whether a separator line should be displayed above the element to visually separate it from the previous element. No separator will be displayed for the first element in a container, even if this property is set to true. - /// - [JsonPropertyName("separator")] - public bool? Separator { get; set; } - - /// - /// The height of the element. When set to stretch, the element will use the remaining vertical space in its container. + /// An application ID or resource identifier with which to exchange a token on behalf of. This property is identity provider- and application-specific. /// - [JsonPropertyName("height")] - public ElementHeight? Height { get; set; } + [JsonPropertyName("uri")] + public string? Uri { get; set; } /// - /// Controls how the element should be horizontally aligned. + /// An identifier for the identity provider with which to attempt a token exchange. /// - [JsonPropertyName("horizontalAlignment")] - public HorizontalAlignment? HorizontalAlignment { get; set; } + [JsonPropertyName("providerId")] + public string? ProviderId { get; set; } /// - /// Controls the amount of space between this element and the previous one. No space will be added for the first element in a container. + /// Serializes this TokenExchangeResource into a JSON string. /// - [JsonPropertyName("spacing")] - public Spacing? Spacing { get; set; } + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } - /// - /// Controls for which card width the element should be displayed. If targetWidth isn't specified, the element is rendered at all card widths. Using targetWidth makes it possible to author responsive cards that adapt their layout to the available horizontal space. For more details, see [Responsive layout](https://adaptivecards.microsoft.com/?topic=responsive-layout). - /// - [JsonPropertyName("targetWidth")] - public TargetWidth? TargetWidth { get; set; } + public TokenExchangeResource WithKey(string value) + { + this.Key = value; + return this; + } - /// - /// Controls whether the element should be used as a sort key by elements that allow sorting across a collection of elements. - /// - [JsonPropertyName("isSortKey")] - public bool? IsSortKey { get; set; } + public TokenExchangeResource WithId(string value) + { + this.Id = value; + return this; + } - /// - /// An Action that will be invoked when the element is tapped or clicked. Action.ShowCard is not supported. - /// - [JsonPropertyName("selectAction")] - public Action? SelectAction { get; set; } + public TokenExchangeResource WithUri(string value) + { + this.Uri = value; + return this; + } - /// - /// The style of the container. Container styles control the colors of the background, border and text inside the container, in such a way that contrast requirements are always met. - /// - [JsonPropertyName("style")] - public ContainerStyle? Style { get; set; } + public TokenExchangeResource WithProviderId(string value) + { + this.ProviderId = value; + return this; + } +} +/// +/// Represents a set of Teams-specific properties on a card. +/// +public class TeamsCardProperties : SerializableObject +{ /// - /// Controls if a border should be displayed around the container. + /// Deserializes a JSON string into an object of type TeamsCardProperties. /// - [JsonPropertyName("showBorder")] - public bool? ShowBorder { get; set; } + public static TeamsCardProperties? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } /// - /// Controls if the container should have rounded corners. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("roundedCorners")] - public bool? RoundedCorners { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The layouts associated with the container. The container can dynamically switch from one layout to another as the card's width changes. See [Container layouts](https://adaptivecards.microsoft.com/?topic=container-layouts) for more details. + /// Controls the width of the card in a Teams chat. + /// + /// Note that setting `width` to "full" will not actually stretch the card to the "full width" of the chat pane. It will only make the card wider than when the `width` property isn't set. /// - [JsonPropertyName("layouts")] - public IList? Layouts { get; set; } + [JsonPropertyName("width")] + public TeamsCardWidth? Width { get; set; } /// - /// Controls if the container should bleed into its parent. A bleeding container extends into its parent's padding. + /// The Teams-specific entities associated with the card. /// - [JsonPropertyName("bleed")] - public bool? Bleed { get; set; } + [JsonPropertyName("entities")] + public IList? Entities { get; set; } /// - /// The minimum height, in pixels, of the container, in the `px` format. + /// Serializes this TeamsCardProperties into a JSON string. /// - [JsonPropertyName("minHeight")] - public string? MinHeight { get; set; } + public string Serialize() + { + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); + } - /// - /// Defines the container's background image. - /// - [JsonPropertyName("backgroundImage")] - public IUnion? BackgroundImage { get; set; } + public TeamsCardProperties WithKey(string value) + { + this.Key = value; + return this; + } - /// - /// Controls how the container's content should be vertically aligned. - /// - [JsonPropertyName("verticalContentAlignment")] - public VerticalAlignment? VerticalContentAlignment { get; set; } + public TeamsCardProperties WithWidth(TeamsCardWidth value) + { + this.Width = value; + return this; + } - /// - /// Controls if the content of the card is to be rendered left-to-right or right-to-left. - /// - [JsonPropertyName("rtl")] - public bool? Rtl { get; set; } + public TeamsCardProperties WithEntities(params IList value) + { + this.Entities = value; + return this; + } +} +/// +/// Represents a mention to a person. +/// +public class Mention : SerializableObject +{ /// - /// The maximum height, in pixels, of the container, in the `px` format. When the content of a container exceeds the container's maximum height, a vertical scrollbar is displayed. + /// Deserializes a JSON string into an object of type Mention. /// - [JsonPropertyName("maxHeight")] - public string? MaxHeight { get; set; } + public static Mention? Deserialize(string json) + { + return JsonSerializer.Deserialize(json); + } /// - /// The width of the column. If expressed as a number, represents the relative weight of the column in the set. If expressed as a string, `auto` will automatically adjust the column's width according to its content, `stretch` will make the column use the remaining horizontal space (shared with other columns with width set to `stretch`) and using the `px` format will give the column an explicit width in pixels. + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. /// - [JsonPropertyName("width")] - public IUnion? Width { get; set; } + [JsonPropertyName("key")] + public string? Key { get; set; } /// - /// The area of a Layout.AreaGrid layout in which an element should be displayed. + /// Must be **mention**. /// - [JsonPropertyName("grid.area")] - public string? GridArea { get; set; } + [JsonPropertyName("type")] + public string Type { get; } = "mention"; /// - /// An alternate element to render if the type of this one is unsupported or if the host application doesn't support all the capabilities specified in the requires property. + /// The text that will be substituted with the mention. /// - [JsonPropertyName("fallback")] - public IUnion? Fallback { get; set; } + [JsonPropertyName("text")] + public string? Text { get; set; } /// - /// The elements in the column. + /// Defines the entity being mentioned. /// - [JsonPropertyName("items")] - public IList? Items { get; set; } - - public Column(params IList items) - { - this.Items = items; - } + [JsonPropertyName("mentioned")] + public MentionedEntity? Mentioned { get; set; } /// - /// Serializes this Column into a JSON string. + /// Serializes this Mention into a JSON string. /// public string Serialize() { @@ -16151,153 +19355,269 @@ public string Serialize() ); } - public Column WithId(string value) + public Mention WithKey(string value) { - this.Id = value; + this.Key = value; return this; } - public Column WithRequires(HostCapabilities value) + public Mention WithText(string value) { - this.Requires = value; + this.Text = value; return this; } - public Column WithLang(string value) + public Mention WithMentioned(MentionedEntity value) { - this.Lang = value; + this.Mentioned = value; return this; } +} - public Column WithIsVisible(bool value) +/// +/// Represents a mentioned person or tag. +/// +public class MentionedEntity : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type MentionedEntity. + /// + public static MentionedEntity? Deserialize(string json) { - this.IsVisible = value; - return this; + return JsonSerializer.Deserialize(json); } - public Column WithSeparator(bool value) - { - this.Separator = value; - return this; - } + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } - public Column WithHeight(ElementHeight value) - { - this.Height = value; - return this; - } + /// + /// The Id of a person (typically a Microsoft Entra user Id) or tag. + /// + [JsonPropertyName("id")] + public string? Id { get; set; } - public Column WithHorizontalAlignment(HorizontalAlignment value) - { - this.HorizontalAlignment = value; - return this; - } + /// + /// The name of the mentioned entity. + /// + [JsonPropertyName("name")] + public string? Name { get; set; } - public Column WithSpacing(Spacing value) + /// + /// The type of the mentioned entity. + /// + [JsonPropertyName("mentionType")] + public MentionType? MentionType { get; set; } = MentionType.Person; + + /// + /// Serializes this MentionedEntity into a JSON string. + /// + public string Serialize() { - this.Spacing = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public Column WithTargetWidth(TargetWidth value) + public MentionedEntity WithKey(string value) { - this.TargetWidth = value; + this.Key = value; return this; } - public Column WithIsSortKey(bool value) + public MentionedEntity WithId(string value) { - this.IsSortKey = value; + this.Id = value; return this; } - public Column WithSelectAction(Action value) + public MentionedEntity WithName(string value) { - this.SelectAction = value; + this.Name = value; return this; } - public Column WithStyle(ContainerStyle value) + public MentionedEntity WithMentionType(MentionType value) { - this.Style = value; + this.MentionType = value; return this; } +} - public Column WithShowBorder(bool value) +/// +/// Card-level metadata. +/// +public class CardMetadata : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type CardMetadata. + /// + public static CardMetadata? Deserialize(string json) { - this.ShowBorder = value; - return this; + return JsonSerializer.Deserialize(json); } - public Column WithRoundedCorners(bool value) + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The URL the card originates from. When `webUrl` is set, the card is dubbed an **Adaptive Card-based Loop Component** and, when pasted in Teams or other Loop Component-capable host applications, the URL will unfurl to the same exact card. + /// + [JsonPropertyName("webUrl")] + public string? WebUrl { get; set; } + + /// + /// Serializes this CardMetadata into a JSON string. + /// + public string Serialize() { - this.RoundedCorners = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public Column WithLayouts(params IList value) + public CardMetadata WithKey(string value) { - this.Layouts = value; + this.Key = value; return this; } - public Column WithBleed(bool value) + public CardMetadata WithWebUrl(string value) { - this.Bleed = value; + this.WebUrl = value; return this; } +} - public Column WithMinHeight(string value) +/// +/// The resources that can be used in the body of the card. +/// +public class Resources : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type Resources. + /// + public static Resources? Deserialize(string json) { - this.MinHeight = value; - return this; + return JsonSerializer.Deserialize(json); } - public Column WithBackgroundImage(IUnion value) + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// String resources that can provide translations in multiple languages. String resources make it possible to craft cards that are automatically localized according to the language settings of the application that displays the card. + /// + [JsonPropertyName("strings")] + public IDictionary? Strings { get; set; } + + /// + /// Serializes this Resources into a JSON string. + /// + public string Serialize() { - this.BackgroundImage = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public Column WithVerticalContentAlignment(VerticalAlignment value) + public Resources WithKey(string value) { - this.VerticalContentAlignment = value; + this.Key = value; return this; } - public Column WithRtl(bool value) + public Resources WithStrings(IDictionary value) { - this.Rtl = value; + this.Strings = value; return this; } +} - public Column WithMaxHeight(string value) +/// +/// Defines the replacement string values. +/// +public class StringResource : SerializableObject +{ + /// + /// Deserializes a JSON string into an object of type StringResource. + /// + public static StringResource? Deserialize(string json) { - this.MaxHeight = value; - return this; + return JsonSerializer.Deserialize(json); } - public Column WithWidth(IUnion value) + /// + /// Defines an optional key for the object. Keys are seldom needed, but in some scenarios, specifying keys can help maintain visual state in the host application. + /// + [JsonPropertyName("key")] + public string? Key { get; set; } + + /// + /// The default value of the string, which is used when no matching localized value is found. + /// + [JsonPropertyName("defaultValue")] + public string? DefaultValue { get; set; } + + /// + /// Localized values of the string, where keys represent the locale (e.g. `en-US`) in the `(-)` format. `` is the 2-letter language code and `` is the optional 2-letter country code. + /// + [JsonPropertyName("localizedValues")] + public IDictionary? LocalizedValues { get; set; } + + /// + /// Serializes this StringResource into a JSON string. + /// + public string Serialize() { - this.Width = value; - return this; + return JsonSerializer.Serialize( + this, + new JsonSerializerOptions + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull + } + ); } - public Column WithGridArea(string value) + public StringResource WithKey(string value) { - this.GridArea = value; + this.Key = value; return this; } - public Column WithFallback(IUnion value) + public StringResource WithDefaultValue(string value) { - this.Fallback = value; + this.DefaultValue = value; return this; } - public Column WithItems(params IList value) + public StringResource WithLocalizedValues(IDictionary value) { - this.Items = value; + this.LocalizedValues = value; return this; } } \ No newline at end of file diff --git a/Samples/Samples.Dialogs/Program.cs b/Samples/Samples.Dialogs/Program.cs index d78603af..41c31b65 100644 --- a/Samples/Samples.Dialogs/Program.cs +++ b/Samples/Samples.Dialogs/Program.cs @@ -151,6 +151,21 @@ static string SanitizeForLog(string? input) return input.Replace("\r", "").Replace("\n", ""); } +static Microsoft.Teams.Cards.SubmitAction CreateTaskFetchSubmitAction(string title, string openDialogType) +{ + var submitActionData = new Microsoft.Teams.Cards.SubmitActionData + { + Msteams = new Microsoft.Teams.Cards.TaskFetchSubmitActionData() + }; + submitActionData.NonSchemaProperties["opendialogtype"] = openDialogType; + + return new Microsoft.Teams.Cards.SubmitAction + { + Title = title, + Data = new Microsoft.Teams.Common.Union(submitActionData) + }; +} + static Microsoft.Teams.Cards.AdaptiveCard CreateDialogLauncherCard() { var card = new Microsoft.Teams.Cards.AdaptiveCard @@ -165,26 +180,10 @@ static Microsoft.Teams.Cards.AdaptiveCard CreateDialogLauncherCard() }, Actions = new List { - new Microsoft.Teams.Cards.TaskFetchAction( - Microsoft.Teams.Cards.TaskFetchAction.FromObject(new { opendialogtype = "simple_form" })) - { - Title = "Simple form test" - }, - new Microsoft.Teams.Cards.TaskFetchAction( - Microsoft.Teams.Cards.TaskFetchAction.FromObject(new { opendialogtype = "webpage_dialog" })) - { - Title = "Webpage Dialog" - }, - new Microsoft.Teams.Cards.TaskFetchAction( - Microsoft.Teams.Cards.TaskFetchAction.FromObject(new { opendialogtype = "multi_step_form" })) - { - Title = "Multi-step Form" - }, - new Microsoft.Teams.Cards.TaskFetchAction( - Microsoft.Teams.Cards.TaskFetchAction.FromObject(new { opendialogtype = "mixed_example" })) - { - Title = "Mixed Example" - } + CreateTaskFetchSubmitAction("Simple form test", "simple_form"), + CreateTaskFetchSubmitAction("Webpage Dialog", "webpage_dialog"), + CreateTaskFetchSubmitAction("Multi-step Form", "multi_step_form"), + CreateTaskFetchSubmitAction("Mixed Example", "mixed_example") } }; diff --git a/Tests/Microsoft.Teams.Cards.Tests/AdaptiveCardsTest.cs b/Tests/Microsoft.Teams.Cards.Tests/AdaptiveCardsTest.cs index 44e92bbb..af57064f 100644 --- a/Tests/Microsoft.Teams.Cards.Tests/AdaptiveCardsTest.cs +++ b/Tests/Microsoft.Teams.Cards.Tests/AdaptiveCardsTest.cs @@ -10,13 +10,10 @@ public class AdaptiveCardsTest public void Should_Serialize_AdaptiveCard_Simple() { // arrange - AdaptiveCard card = new AdaptiveCard() - { - Body = new List() + AdaptiveCard card = new AdaptiveCard(new List { new TextBlock("Hello, Adaptive Card!") - } - }; + }); // act var json = JsonSerializer.Serialize(card); @@ -58,10 +55,7 @@ public void Should_Deserialize_AdaptiveCard_Simple() public void Should_Serialize_BasicCard_WithToggleInput() { // arrange - recreating CreateBasicAdaptiveCard from samples - var card = new AdaptiveCard - { - Schema = "http://adaptivecards.io/schemas/adaptive-card.json", - Body = new List + var card = new AdaptiveCard(new List { new TextBlock("Hello world") { @@ -72,7 +66,9 @@ public void Should_Serialize_BasicCard_WithToggleInput() { Id = "notify" } - }, + }) + { + Schema = "http://adaptivecards.io/schemas/adaptive-card.json", Actions = new List { new ExecuteAction @@ -153,7 +149,7 @@ public void Should_Deserialize_ProfileCard_WithInputs() ] }"; - var card = JsonSerializer.Deserialize(cardJson); + var card = JsonSerializer.Deserialize(json); Assert.NotNull(card); // Note: Schema might be serialized as $schema in JSON but not always set on deserialized object @@ -190,10 +186,7 @@ public void Should_Deserialize_ProfileCard_WithInputs() public void Should_Serialize_TaskFormCard_WithChoiceSet() { // arrange - recreating CreateTaskFormCard from samples - var card = new AdaptiveCard - { - Schema = "http://adaptivecards.io/schemas/adaptive-card.json", - Body = new List + var card = new AdaptiveCard(new List { new TextBlock("Create New Task") { @@ -206,17 +199,16 @@ public void Should_Serialize_TaskFormCard_WithChoiceSet() Label = "Task Title", Placeholder = "Enter task title" }, - new ChoiceSetInput - { - Id = "priority", - Label = "Priority", - Value = "medium", - Choices = new List + new ChoiceSetInput(new List { new() { Title = "High", Value = "high" }, new() { Title = "Medium", Value = "medium" }, new() { Title = "Low", Value = "low" } - } + }) + { + Id = "priority", + Label = "Priority", + Value = "medium" }, new DateInput { @@ -224,7 +216,9 @@ public void Should_Serialize_TaskFormCard_WithChoiceSet() Label = "Due Date", Value = "2024-01-15" } - } + }) + { + Schema = "http://adaptivecards.io/schemas/adaptive-card.json" }; // act @@ -350,10 +344,7 @@ public void Should_Deserialize_ComplexCard_FromJson() public void Should_Serialize_FeedbackCard_WithMultilineInput() { // arrange - recreating CreateFeedbackCard from samples - var card = new AdaptiveCard - { - Schema = "http://adaptivecards.io/schemas/adaptive-card.json", - Body = new List + var card = new AdaptiveCard(new List { new TextBlock("Feedback Form") { @@ -368,7 +359,9 @@ public void Should_Serialize_FeedbackCard_WithMultilineInput() IsMultiline = true, IsRequired = true } - }, + }) + { + Schema = "http://adaptivecards.io/schemas/adaptive-card.json", Actions = new List { new ExecuteAction @@ -433,7 +426,7 @@ public void Should_Deserialize_ValidationCard_WithNumberInput() ] }"; - var card = JsonSerializer.Deserialize(cardJson); + var card = JsonSerializer.Deserialize(json); Assert.NotNull(card); Assert.Equal(3, card.Body!.Count); @@ -512,12 +505,11 @@ public void Should_Deserialize() public void Should_Not_Serialize_Null_MsTeams_Property_On_SubmitAction() { // arrange - var card = new AdaptiveCard - { - Body = new List + var card = new AdaptiveCard(new List { new TextBlock("Test card with Submit action") - }, + }) + { Actions = new List { new SubmitAction