diff --git a/src/Agent/AutopilotMonitor.Agent/buildcounter.txt b/src/Agent/AutopilotMonitor.Agent/buildcounter.txt
index 82d45208..cb3e25bb 100644
--- a/src/Agent/AutopilotMonitor.Agent/buildcounter.txt
+++ b/src/Agent/AutopilotMonitor.Agent/buildcounter.txt
@@ -1 +1 @@
-589
+609
diff --git a/src/Backend/AutopilotMonitor.Functions/Functions/Ingest/IngestEventsFunction.Processing.cs b/src/Backend/AutopilotMonitor.Functions/Functions/Ingest/IngestEventsFunction.Processing.cs
index fdab016a..95f5c6ae 100644
--- a/src/Backend/AutopilotMonitor.Functions/Functions/Ingest/IngestEventsFunction.Processing.cs
+++ b/src/Backend/AutopilotMonitor.Functions/Functions/Ingest/IngestEventsFunction.Processing.cs
@@ -471,7 +471,7 @@ namespace AutopilotMonitor.Functions.Functions.Ingest
break;
}
- AggregateAppInstallEvent(evt, storedEvents[0].TenantId, storedEvents[0].SessionId, classification.AppInstallUpdates);
+ AggregateAppInstallEvent(evt, storedEvents[0].TenantId!, storedEvents[0].SessionId!, classification.AppInstallUpdates);
}
return classification;
diff --git a/src/Shared/AutopilotMonitor.Shared/AutopilotMonitor.Shared.csproj b/src/Shared/AutopilotMonitor.Shared/AutopilotMonitor.Shared.csproj
index 594d0e6d..2e218256 100644
--- a/src/Shared/AutopilotMonitor.Shared/AutopilotMonitor.Shared.csproj
+++ b/src/Shared/AutopilotMonitor.Shared/AutopilotMonitor.Shared.csproj
@@ -3,6 +3,7 @@
netstandard2.0
9.0
+ enable
diff --git a/src/Shared/AutopilotMonitor.Shared/Models/Config/TenantConfiguration.cs b/src/Shared/AutopilotMonitor.Shared/Models/Config/TenantConfiguration.cs
index 8e0eb1b0..f75d7bf6 100644
--- a/src/Shared/AutopilotMonitor.Shared/Models/Config/TenantConfiguration.cs
+++ b/src/Shared/AutopilotMonitor.Shared/Models/Config/TenantConfiguration.cs
@@ -53,7 +53,7 @@ namespace AutopilotMonitor.Shared.Models
/// Optional reason why the tenant was disabled
/// Displayed to users attempting to log in
///
- public string DisabledReason { get; set; }
+ public string? DisabledReason { get; set; }
///
/// Optional date/time until which the tenant is disabled
diff --git a/src/Shared/AutopilotMonitor.Shared/Models/Enrollment/EnrollmentEvent.cs b/src/Shared/AutopilotMonitor.Shared/Models/Enrollment/EnrollmentEvent.cs
index c881541e..cc1d82ec 100644
--- a/src/Shared/AutopilotMonitor.Shared/Models/Enrollment/EnrollmentEvent.cs
+++ b/src/Shared/AutopilotMonitor.Shared/Models/Enrollment/EnrollmentEvent.cs
@@ -17,12 +17,12 @@ namespace AutopilotMonitor.Shared.Models
///
/// Session identifier this event belongs to
///
- public string SessionId { get; set; }
+ public string? SessionId { get; set; }
///
/// Tenant identifier
///
- public string TenantId { get; set; }
+ public string? TenantId { get; set; }
///
/// Timestamp when the agent detected/created this event on the device (UTC).
diff --git a/src/Shared/AutopilotMonitor.Shared/Models/GeographicApiModels.cs b/src/Shared/AutopilotMonitor.Shared/Models/GeographicApiModels.cs
index 5a7555ed..8ebf3d28 100644
--- a/src/Shared/AutopilotMonitor.Shared/Models/GeographicApiModels.cs
+++ b/src/Shared/AutopilotMonitor.Shared/Models/GeographicApiModels.cs
@@ -56,7 +56,7 @@ namespace AutopilotMonitor.Shared.Models
public bool IsOutlier { get; set; }
/// "fast", "slow", or null
- public string OutlierDirection { get; set; }
+ public string? OutlierDirection { get; set; }
}
///
diff --git a/src/Shared/AutopilotMonitor.Shared/Models/SessionApiModels.cs b/src/Shared/AutopilotMonitor.Shared/Models/SessionApiModels.cs
index d40983f2..a0ae236b 100644
--- a/src/Shared/AutopilotMonitor.Shared/Models/SessionApiModels.cs
+++ b/src/Shared/AutopilotMonitor.Shared/Models/SessionApiModels.cs
@@ -25,7 +25,7 @@ namespace AutopilotMonitor.Shared.Models
/// Non-null when the session was already marked as terminal by an admin before agent restart.
/// Values: "Succeeded", "Failed". Agent should run cleanup instead of starting monitoring.
///
- public string AdminAction { get; set; }
+ public string? AdminAction { get; set; }
}
///
@@ -63,7 +63,7 @@ namespace AutopilotMonitor.Shared.Models
///
/// Rate limit details (only populated if RateLimitExceeded is true)
///
- public RateLimitInfo RateLimitInfo { get; set; }
+ public RateLimitInfo? RateLimitInfo { get; set; }
///
/// Whether the device has been temporarily blocked by an admin
@@ -85,7 +85,7 @@ namespace AutopilotMonitor.Shared.Models
/// Non-null when an admin has externally changed the session status.
/// Values: "Succeeded", "Failed". Agent should treat as terminal signal and run cleanup.
///
- public string AdminAction { get; set; }
+ public string? AdminAction { get; set; }
}
///
@@ -131,9 +131,9 @@ namespace AutopilotMonitor.Shared.Models
public class GetDiagnosticsUploadUrlResponse
{
public bool Success { get; set; }
- public string UploadUrl { get; set; }
+ public string? UploadUrl { get; set; }
public DateTime ExpiresAt { get; set; }
- public string Message { get; set; }
+ public string? Message { get; set; }
}
///
@@ -222,7 +222,7 @@ namespace AutopilotMonitor.Shared.Models
{
public List Sessions { get; set; } = new();
public bool HasMore { get; set; }
- public string Cursor { get; set; }
+ public string? Cursor { get; set; }
}
///
diff --git a/src/Shared/AutopilotMonitor.Shared/Models/SessionSearchFilter.cs b/src/Shared/AutopilotMonitor.Shared/Models/SessionSearchFilter.cs
index 06f88203..64e9281f 100644
--- a/src/Shared/AutopilotMonitor.Shared/Models/SessionSearchFilter.cs
+++ b/src/Shared/AutopilotMonitor.Shared/Models/SessionSearchFilter.cs
@@ -6,25 +6,25 @@ namespace AutopilotMonitor.Shared.Models
public class SessionSearchFilter
{
// Basic (SessionSummary fields)
- public string Status { get; set; }
- public string SerialNumber { get; set; }
- public string AgentVersion { get; set; }
- public string ImeAgentVersion { get; set; }
- public string DeviceName { get; set; }
- public string Manufacturer { get; set; }
- public string Model { get; set; }
- public string OsBuild { get; set; }
- public string EnrollmentType { get; set; }
+ public string? Status { get; set; }
+ public string? SerialNumber { get; set; }
+ public string? AgentVersion { get; set; }
+ public string? ImeAgentVersion { get; set; }
+ public string? DeviceName { get; set; }
+ public string? Manufacturer { get; set; }
+ public string? Model { get; set; }
+ public string? OsBuild { get; set; }
+ public string? EnrollmentType { get; set; }
public bool? IsPreProvisioned { get; set; }
public bool? IsHybridJoin { get; set; }
- public string GeoCountry { get; set; }
+ public string? GeoCountry { get; set; }
public DateTime? StartedAfter { get; set; }
public DateTime? StartedBefore { get; set; }
public int Limit { get; set; } = 50;
// Dynamic device property filters (key = "eventType.propertyName", value = filter expression)
// Examples: "tpm_status.specVersion" = "2.0", "hardware_spec.ramTotalGB" = ">=8"
- public Dictionary DeviceProperties { get; set; }
+ public Dictionary? DeviceProperties { get; set; }
public bool HasDeviceSnapshotFilters =>
DeviceProperties != null && DeviceProperties.Count > 0;