diff --git a/uSync.BackOffice/Configuration/uSyncSettings.cs b/uSync.BackOffice/Configuration/uSyncSettings.cs
index d5661fc68..559d2181e 100644
--- a/uSync.BackOffice/Configuration/uSyncSettings.cs
+++ b/uSync.BackOffice/Configuration/uSyncSettings.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.ComponentModel;
+using System.Text.Json.Serialization;
namespace uSync.BackOffice.Configuration;
@@ -264,6 +265,7 @@ public class uSyncSettings
///
/// uSync's folder mode - normal, root or production
///
+[JsonConverter(typeof(JsonStringEnumConverter))]
public enum SyncFolderMode
{
///
@@ -285,6 +287,7 @@ public enum SyncFolderMode
///
/// Mode is where the processing happens - normal or background
///
+[JsonConverter(typeof(JsonStringEnumConverter))]
public enum SyncProcessingMode
{
///
diff --git a/uSync.BackOffice/SyncHandlers/Models/HandlerActionNames.cs b/uSync.BackOffice/SyncHandlers/Models/HandlerActionNames.cs
index 2282081e0..d1bc6a6de 100644
--- a/uSync.BackOffice/SyncHandlers/Models/HandlerActionNames.cs
+++ b/uSync.BackOffice/SyncHandlers/Models/HandlerActionNames.cs
@@ -1,10 +1,12 @@
using System;
+using System.Text.Json.Serialization;
namespace uSync.BackOffice.SyncHandlers.Models;
///
/// Possible actions a handler can do (stored in config)
///
+[JsonConverter(typeof(JsonStringEnumConverter))]
public enum HandlerActions
{
///
diff --git a/uSync.Core/ChangeType.cs b/uSync.Core/ChangeType.cs
index c3670e6c0..0af6c3acf 100644
--- a/uSync.Core/ChangeType.cs
+++ b/uSync.Core/ChangeType.cs
@@ -1,10 +1,12 @@
using System.Runtime.Serialization;
+using System.Text.Json.Serialization;
namespace uSync.Core;
///
/// Type of change performed
///
+[JsonConverter(typeof(JsonStringEnumConverter))]
public enum ChangeType : int
{
[EnumMember(Value = "Clean")]
diff --git a/uSync.Core/Dependency/uSyncDependency.cs b/uSync.Core/Dependency/uSyncDependency.cs
index 551606015..9123d9194 100644
--- a/uSync.Core/Dependency/uSyncDependency.cs
+++ b/uSync.Core/Dependency/uSyncDependency.cs
@@ -1,4 +1,6 @@
-using Umbraco.Cms.Core;
+using System.Text.Json.Serialization;
+
+using Umbraco.Cms.Core;
namespace uSync.Core.Dependency;
@@ -90,6 +92,7 @@ private static void FireUpdate(string message, int count, int total)
///
/// the match mode for the dependency (reserved)
///
+[JsonConverter(typeof(JsonStringEnumConverter))]
public enum DependencyMode
{
MustMatch,
diff --git a/uSync.Core/Models/uSyncChange.cs b/uSync.Core/Models/uSyncChange.cs
index 2a19f9e5d..4277171e7 100644
--- a/uSync.Core/Models/uSyncChange.cs
+++ b/uSync.Core/Models/uSyncChange.cs
@@ -100,6 +100,7 @@ public static uSyncChange Warning(string path, string name, string warning)
};
}
+[JsonConverter(typeof(JsonStringEnumConverter))]
public enum ChangeDetailType
{
NoChange,
diff --git a/uSync.Core/Sync/SyncTreeType.cs b/uSync.Core/Sync/SyncTreeType.cs
index 0349d56ec..86f5538ef 100644
--- a/uSync.Core/Sync/SyncTreeType.cs
+++ b/uSync.Core/Sync/SyncTreeType.cs
@@ -1,4 +1,6 @@
-namespace uSync.Core.Sync;
+using System.Text.Json.Serialization;
+
+namespace uSync.Core.Sync;
///
/// The type of tree item this is.
@@ -15,6 +17,7 @@
/// we can treat it as a 'settings' tree and show the
/// menus when they are valid.
///
+[JsonConverter(typeof(JsonStringEnumConverter))]
public enum SyncTreeType
{
///
diff --git a/uSync.Core/SyncActionType.cs b/uSync.Core/SyncActionType.cs
index 81530a177..d4e70e271 100644
--- a/uSync.Core/SyncActionType.cs
+++ b/uSync.Core/SyncActionType.cs
@@ -1,9 +1,12 @@
-namespace uSync.Core;
+using System.Text.Json.Serialization;
+
+namespace uSync.Core;
///
/// indicates what happened to an item to cause a ghost file
/// to be present.
///
+[JsonConverter(typeof(JsonStringEnumConverter))]
public enum SyncActionType
{
None = 0,
diff --git a/uSync.Core/Tracking/SyncXmlTracker.cs b/uSync.Core/Tracking/SyncXmlTracker.cs
index 43a826a15..ba1bdb9c8 100644
--- a/uSync.Core/Tracking/SyncXmlTracker.cs
+++ b/uSync.Core/Tracking/SyncXmlTracker.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Nodes;
+using System.Text.Json.Serialization;
using System.Xml.Linq;
using System.Xml.XPath;
@@ -414,6 +415,7 @@ public class TrackingKey
public bool IsAttribute { get; set; }
}
+[JsonConverter(typeof(JsonStringEnumConverter))]
public enum TrackingDirection
{
TargetToSource,
diff --git a/uSync.Core/uSyncContentState.cs b/uSync.Core/uSyncContentState.cs
index d38715f2d..94b2110e0 100644
--- a/uSync.Core/uSyncContentState.cs
+++ b/uSync.Core/uSyncContentState.cs
@@ -1,8 +1,11 @@
-namespace uSync.Core;
+using System.Text.Json.Serialization;
+
+namespace uSync.Core;
///
/// the state we thing a culture / content item should be in.
///
+[JsonConverter(typeof(JsonStringEnumConverter))]
public enum uSyncContentState
{
Saved, Unpublished, Published