diff --git a/src/clients/Elsa.Api.Client/Activities/FlowSwitch.cs b/src/clients/Elsa.Api.Client/Activities/FlowSwitch.cs
new file mode 100644
index 000000000..587a5df5f
--- /dev/null
+++ b/src/clients/Elsa.Api.Client/Activities/FlowSwitch.cs
@@ -0,0 +1,19 @@
+using Elsa.Api.Client.Extensions;
+using Elsa.Api.Client.Models;
+
+namespace Elsa.Api.Client.Activities;
+
+///
+/// Represents a flow switch activity.
+///
+public class FlowSwitch : Activity
+{
+ ///
+ /// Gets or sets the cases.
+ ///
+ public ICollection? Cases
+ {
+ get => this.TryGetValue>("cases");
+ set => this["cases"] = value!;
+ }
+}
\ No newline at end of file
diff --git a/src/clients/Elsa.Api.Client/ActivityProviders/FlowSwitchTypeResolver.cs b/src/clients/Elsa.Api.Client/ActivityProviders/FlowSwitchTypeResolver.cs
new file mode 100644
index 000000000..862360662
--- /dev/null
+++ b/src/clients/Elsa.Api.Client/ActivityProviders/FlowSwitchTypeResolver.cs
@@ -0,0 +1,17 @@
+using Elsa.Api.Client.Abstractions;
+using Elsa.Api.Client.Activities;
+using Elsa.Api.Client.Contracts;
+
+namespace Elsa.Api.Client.ActivityProviders;
+
+///
+/// Constructs a activity.
+///
+public class FlowSwitchTypeResolver : ActivityTypeResolverBase
+{
+ ///
+ protected override bool GetSupportsType(ActivityTypeResolverContext context) => context.ActivityTypeName == "Elsa.FlowSwitch";
+
+ ///
+ protected override Type ResolveType(ActivityTypeResolverContext context) => typeof(FlowSwitch);
+}
\ No newline at end of file
diff --git a/src/clients/Elsa.Api.Client/ActivityProviders/FlowchartActivityTypeResolver.cs b/src/clients/Elsa.Api.Client/ActivityProviders/FlowchartTypeResolver.cs
similarity index 87%
rename from src/clients/Elsa.Api.Client/ActivityProviders/FlowchartActivityTypeResolver.cs
rename to src/clients/Elsa.Api.Client/ActivityProviders/FlowchartTypeResolver.cs
index 776a75195..5fffbeba9 100644
--- a/src/clients/Elsa.Api.Client/ActivityProviders/FlowchartActivityTypeResolver.cs
+++ b/src/clients/Elsa.Api.Client/ActivityProviders/FlowchartTypeResolver.cs
@@ -7,7 +7,7 @@ namespace Elsa.Api.Client.ActivityProviders;
///
/// Constructs a activity.
///
-public class FlowchartActivityTypeResolver : ActivityTypeResolverBase
+public class FlowchartTypeResolver : ActivityTypeResolverBase
{
///
protected override bool GetSupportsType(ActivityTypeResolverContext context) => context.ActivityTypeName == "Elsa.Flowchart";
diff --git a/src/clients/Elsa.Api.Client/Converters/ActivityJsonConverter.cs b/src/clients/Elsa.Api.Client/Converters/ActivityJsonConverter.cs
index 6a1bd0ae0..e9c4cfa60 100644
--- a/src/clients/Elsa.Api.Client/Converters/ActivityJsonConverter.cs
+++ b/src/clients/Elsa.Api.Client/Converters/ActivityJsonConverter.cs
@@ -27,7 +27,7 @@ public class ActivityJsonConverter : JsonConverter
var activityRoot = doc.RootElement;
var activityTypeName = activityRoot.GetProperty("type").GetString()!;
var activityType = _activityTypeService.ResolveType(activityTypeName);
- var newOptions = new JsonSerializerOptions();
+ var newOptions = new JsonSerializerOptions(options);
var activity = (Activity)JsonSerializer.Deserialize(activityRoot.GetRawText(), activityType, newOptions)!;
return activity;
diff --git a/src/clients/Elsa.Api.Client/Expressions/ObjectExpression.cs b/src/clients/Elsa.Api.Client/Expressions/ObjectExpression.cs
index c508c3595..782e53254 100644
--- a/src/clients/Elsa.Api.Client/Expressions/ObjectExpression.cs
+++ b/src/clients/Elsa.Api.Client/Expressions/ObjectExpression.cs
@@ -32,5 +32,5 @@ public class ObjectExpression : IExpression
///
/// Returns the string representation of the expression.
///
- public override string ToString() => Value?.ToString() ?? "";
+ public override string ToString() => Value ?? "";
}
\ No newline at end of file
diff --git a/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs b/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs
index 02fe8d2e8..32bb283b6 100644
--- a/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs
+++ b/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs
@@ -43,7 +43,8 @@ public static class DependencyInjectionExtensions
{
services.AddSingleton();
services.AddActivityTypeResolver();
- services.AddActivityTypeResolver();
+ services.AddActivityTypeResolver();
+ services.AddActivityTypeResolver();
return services;
}
diff --git a/src/clients/Elsa.Api.Client/Models/Case.cs b/src/clients/Elsa.Api.Client/Models/Case.cs
new file mode 100644
index 000000000..8c144f160
--- /dev/null
+++ b/src/clients/Elsa.Api.Client/Models/Case.cs
@@ -0,0 +1,10 @@
+using Elsa.Api.Client.Contracts;
+using Elsa.Api.Client.Expressions;
+
+namespace Elsa.Api.Client.Models;
+
+public class Case
+{
+ public string Label { get; set; } = default!;
+ public IExpression Condition { get; set; } = new JavaScriptExpression("");
+}
\ No newline at end of file
diff --git a/src/clients/Elsa.Api.Client/Resources/ActivityDescriptors/Models/Port.cs b/src/clients/Elsa.Api.Client/Resources/ActivityDescriptors/Models/Port.cs
index 953df1d2d..c668e0e0b 100644
--- a/src/clients/Elsa.Api.Client/Resources/ActivityDescriptors/Models/Port.cs
+++ b/src/clients/Elsa.Api.Client/Resources/ActivityDescriptors/Models/Port.cs
@@ -23,5 +23,5 @@ public class Port
///
/// Gets or sets the visibility of the port.
///
- public bool IsBrowsable { get; set; } = true;
+ public bool? IsBrowsable { get; set; } = true;
}
\ No newline at end of file