diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props
index 1932243700..937074a2c5 100644
--- a/src/Directory.Packages.props
+++ b/src/Directory.Packages.props
@@ -61,7 +61,7 @@
-
+
diff --git a/src/ServiceControl.LicenseManagement/LicenseDetails.cs b/src/ServiceControl.LicenseManagement/LicenseDetails.cs
index 64c68832ed..eab2cf5015 100644
--- a/src/ServiceControl.LicenseManagement/LicenseDetails.cs
+++ b/src/ServiceControl.LicenseManagement/LicenseDetails.cs
@@ -1,6 +1,8 @@
namespace ServiceControl.LicenseManagement
{
using System;
+ using System.Linq;
+ using System.Text.RegularExpressions;
using Particular.Licensing;
public class LicenseDetails
@@ -24,6 +26,7 @@ public class LicenseDetails
public bool WarnUserUpgradeProtectionIsExpiring { get; private init; }
public bool WarnUserUpgradeProtectionHasExpired { get; private init; }
public string Status { get; private init; }
+ public LicensedProduct[] Products { get; private init; }
public static LicenseDetails TrialFromEndDate(DateOnly endDate)
{
@@ -64,6 +67,8 @@ internal static LicenseDetails FromLicense(License license)
IsTrialLicense = license.IsTrialLicense,
LicenseType = license.LicenseType,
Edition = license.Edition,
+ //strip any internal prefix from what gets displayed to the customer
+ Products = license.LicensedEndpoints?.Select(le => new LicensedProduct(le.Size.EndsWith("U") ? "Unlimited" : Regex.Replace(le.Size, @"^\D*", ""), le.Quantity)).ToArray(),
ValidForServiceControl = license.ValidForApplication("ServiceControl"),
DaysUntilSubscriptionExpires = license.GetDaysUntilLicenseExpires(),
DaysUntilUpgradeProtectionExpires = license.GetDaysUntilUpgradeProtectionExpires(),
@@ -95,4 +100,6 @@ static bool HasLicenseDateExpired(DateTime licenseDate)
return oneDayGrace < DateTime.UtcNow.Date;
}
}
+
+ public record LicensedProduct(string Name, int Quantity);
}
\ No newline at end of file
diff --git a/src/ServiceControl/Licensing/LicenseController.cs b/src/ServiceControl/Licensing/LicenseController.cs
index 15539d9db0..05029db055 100644
--- a/src/ServiceControl/Licensing/LicenseController.cs
+++ b/src/ServiceControl/Licensing/LicenseController.cs
@@ -6,6 +6,7 @@
using Monitoring.HeartbeatMonitoring;
using Particular.ServiceControl.Licensing;
using ServiceBus.Management.Infrastructure.Settings;
+ using ServiceControl.LicenseManagement;
[ApiController]
[Route("api")]
@@ -31,6 +32,7 @@ public async Task> License(bool refresh, string client
LicenseType = activeLicense.Details.LicenseType ?? string.Empty,
InstanceName = settings.InstanceName ?? string.Empty,
LicenseStatus = activeLicense.Details.Status,
+ Products = activeLicense.Details.Products,
LicenseExtensionUrl = connectorHeartbeatStatus.LastHeartbeat == null
? $"https://particular.net/extend-your-trial?p={clientName}"
: $"https://particular.net/license/mt?p={clientName}&t={(activeLicense.IsEvaluation ? 0 : 1)}"
@@ -53,6 +55,8 @@ public class LicenseInfo
public string Status { get; set; }
+ public LicensedProduct[] Products { get; set; }
+
public string LicenseType { get; set; }
public string InstanceName { get; set; }