From df29b205dd2e8bf47382453838bed40441e5b243 Mon Sep 17 00:00:00 2001 From: Daniel Abbatt Date: Sun, 21 Jan 2024 08:47:24 +0000 Subject: [PATCH 1/7] Added IHasName and IHasDescription to NamedItem and DescribedItem. Updated CreationDtos to use these new Interfaces --- LogicMonitor.Api/Alerts/EscalationChainCreationDto.cs | 3 ++- LogicMonitor.Api/Collectors/CollectorCreationDto.cs | 2 +- .../Collectors/CollectorGroupCreationDto.cs | 2 +- LogicMonitor.Api/Dashboards/DashboardCreationDto.cs | 2 +- .../Dashboards/DashboardGroupCreationDto.cs | 2 +- LogicMonitor.Api/Dashboards/WidgetCreationDto.cs | 2 +- LogicMonitor.Api/DescribedItem.cs | 2 +- LogicMonitor.Api/Devices/DeviceCreationDto.cs | 2 +- LogicMonitor.Api/Devices/DeviceGroupCreationDto.cs | 2 +- LogicMonitor.Api/IHasDescription.cs | 11 +++++++++++ LogicMonitor.Api/IHasName.cs | 11 +++++++++++ .../LogicModules/AppliesToFunctionCreationDto.cs | 2 +- LogicMonitor.Api/LogicMonitor.Api.csproj | 2 +- LogicMonitor.Api/NamedItem.cs | 2 +- LogicMonitor.Api/Netscans/NetscanCreationDto.cs | 2 +- LogicMonitor.Api/Netscans/NetscanGroupCreationDto.cs | 2 +- LogicMonitor.Api/Reports/ReportGroupCreationDto.cs | 2 +- LogicMonitor.Api/Settings/AlertRuleCreationDto.cs | 2 +- LogicMonitor.Api/Settings/IntegrationCreationDto.cs | 3 ++- .../Settings/RecipientGroupCreationDto.cs | 2 +- .../Topologies/TopologyGroupCreationDto.cs | 2 +- LogicMonitor.Api/Users/RoleCreationDto.cs | 2 +- LogicMonitor.Api/Users/RoleGroupCreationDto.cs | 2 +- LogicMonitor.Api/Users/UserGroupCreationDto.cs | 2 +- LogicMonitor.Api/Websites/WebsiteCreationDto.cs | 2 +- LogicMonitor.Api/Websites/WebsiteGroupCreationDto.cs | 2 +- 26 files changed, 48 insertions(+), 24 deletions(-) create mode 100644 LogicMonitor.Api/IHasDescription.cs create mode 100644 LogicMonitor.Api/IHasName.cs diff --git a/LogicMonitor.Api/Alerts/EscalationChainCreationDto.cs b/LogicMonitor.Api/Alerts/EscalationChainCreationDto.cs index 27fa8dec..02a38ded 100644 --- a/LogicMonitor.Api/Alerts/EscalationChainCreationDto.cs +++ b/LogicMonitor.Api/Alerts/EscalationChainCreationDto.cs @@ -3,7 +3,8 @@ /// /// An Escalation chain creation DTO /// -public class EscalationChainCreationDto : CreationDto +public class EscalationChainCreationDto + : CreationDto, IHasName, IHasDescription { /// /// The LogicMonitor Name diff --git a/LogicMonitor.Api/Collectors/CollectorCreationDto.cs b/LogicMonitor.Api/Collectors/CollectorCreationDto.cs index aa20d686..67e6c76a 100644 --- a/LogicMonitor.Api/Collectors/CollectorCreationDto.cs +++ b/LogicMonitor.Api/Collectors/CollectorCreationDto.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Collectors; /// A LogicMonitor Collector /// [DataContract] -public class CollectorCreationDto : CreationDto +public class CollectorCreationDto : CreationDto, IHasDescription { /// /// The Collector's description diff --git a/LogicMonitor.Api/Collectors/CollectorGroupCreationDto.cs b/LogicMonitor.Api/Collectors/CollectorGroupCreationDto.cs index e4d94dc9..abb12e77 100644 --- a/LogicMonitor.Api/Collectors/CollectorGroupCreationDto.cs +++ b/LogicMonitor.Api/Collectors/CollectorGroupCreationDto.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Collectors; /// A LogicMonitor Collector Group creation DTO /// [DataContract] -public class CollectorGroupCreationDto : CreationDto +public class CollectorGroupCreationDto : CreationDto, IHasName, IHasDescription { /// /// The name diff --git a/LogicMonitor.Api/Dashboards/DashboardCreationDto.cs b/LogicMonitor.Api/Dashboards/DashboardCreationDto.cs index ee927c01..7e7d3bb2 100644 --- a/LogicMonitor.Api/Dashboards/DashboardCreationDto.cs +++ b/LogicMonitor.Api/Dashboards/DashboardCreationDto.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Dashboards; /// A dashboard creation dto /// [DataContract] -public class DashboardCreationDto : CreationDto +public class DashboardCreationDto : CreationDto, IHasName, IHasDescription { /// /// Owner diff --git a/LogicMonitor.Api/Dashboards/DashboardGroupCreationDto.cs b/LogicMonitor.Api/Dashboards/DashboardGroupCreationDto.cs index 0e0d00ae..ef7f290c 100644 --- a/LogicMonitor.Api/Dashboards/DashboardGroupCreationDto.cs +++ b/LogicMonitor.Api/Dashboards/DashboardGroupCreationDto.cs @@ -4,7 +4,7 @@ /// A dashboard group creation dto /// [DataContract] -public class DashboardGroupCreationDto : CreationDto +public class DashboardGroupCreationDto : CreationDto, IHasName, IHasDescription { /// /// The Parent Group Id diff --git a/LogicMonitor.Api/Dashboards/WidgetCreationDto.cs b/LogicMonitor.Api/Dashboards/WidgetCreationDto.cs index 61bea003..f3b877b5 100644 --- a/LogicMonitor.Api/Dashboards/WidgetCreationDto.cs +++ b/LogicMonitor.Api/Dashboards/WidgetCreationDto.cs @@ -5,7 +5,7 @@ namespace LogicMonitor.Api.Dashboards; /// /// [DataContract] -public abstract class WidgetCreationDto : CreationDto where T : Widget +public abstract class WidgetCreationDto : CreationDto, IHasName, IHasDescription where T : Widget { /// /// The refresh periodicity in minutes (as a string) diff --git a/LogicMonitor.Api/DescribedItem.cs b/LogicMonitor.Api/DescribedItem.cs index 67814c3e..2b98c49d 100644 --- a/LogicMonitor.Api/DescribedItem.cs +++ b/LogicMonitor.Api/DescribedItem.cs @@ -3,7 +3,7 @@ namespace LogicMonitor.Api; /// /// A described item /// -public abstract class DescribedItem : IdentifiedItem +public abstract class DescribedItem : IdentifiedItem, IHasDescription { /// /// The LogicMonitor Description diff --git a/LogicMonitor.Api/Devices/DeviceCreationDto.cs b/LogicMonitor.Api/Devices/DeviceCreationDto.cs index 2e37d77b..e4a616c2 100644 --- a/LogicMonitor.Api/Devices/DeviceCreationDto.cs +++ b/LogicMonitor.Api/Devices/DeviceCreationDto.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Devices; /// A Device (also known as a Host) /// [DataContract] -public class DeviceCreationDto : CreationDto +public class DeviceCreationDto : CreationDto, IHasName, IHasDescription { /// /// A comma-separated list of device group ids diff --git a/LogicMonitor.Api/Devices/DeviceGroupCreationDto.cs b/LogicMonitor.Api/Devices/DeviceGroupCreationDto.cs index b54aa2f5..504f084b 100644 --- a/LogicMonitor.Api/Devices/DeviceGroupCreationDto.cs +++ b/LogicMonitor.Api/Devices/DeviceGroupCreationDto.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Devices; /// A device group creation dto /// [DataContract] -public class DeviceGroupCreationDto : CreationDto +public class DeviceGroupCreationDto : CreationDto, IHasName, IHasDescription { /// /// The Parent Group Id as a string diff --git a/LogicMonitor.Api/IHasDescription.cs b/LogicMonitor.Api/IHasDescription.cs new file mode 100644 index 00000000..96a07344 --- /dev/null +++ b/LogicMonitor.Api/IHasDescription.cs @@ -0,0 +1,11 @@ +namespace LogicMonitor.Api; +/// +/// An object that has a Description +/// +public interface IHasDescription +{ + /// + /// The Description + /// + public string Description { get; set; } +} diff --git a/LogicMonitor.Api/IHasName.cs b/LogicMonitor.Api/IHasName.cs new file mode 100644 index 00000000..110b6e9d --- /dev/null +++ b/LogicMonitor.Api/IHasName.cs @@ -0,0 +1,11 @@ +namespace LogicMonitor.Api; +/// +/// Defines that the object has a Name property +/// +public interface IHasName +{ + /// + /// The name + /// + public string Name { get; set; } +} diff --git a/LogicMonitor.Api/LogicModules/AppliesToFunctionCreationDto.cs b/LogicMonitor.Api/LogicModules/AppliesToFunctionCreationDto.cs index 06739c80..53122ef9 100644 --- a/LogicMonitor.Api/LogicModules/AppliesToFunctionCreationDto.cs +++ b/LogicMonitor.Api/LogicModules/AppliesToFunctionCreationDto.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.LogicModules; /// An AppliesTo Function creation DTO /// [DataContract] -public class AppliesToFunctionCreationDto : CreationDto +public class AppliesToFunctionCreationDto : CreationDto, IHasName, IHasDescription { /// /// The name diff --git a/LogicMonitor.Api/LogicMonitor.Api.csproj b/LogicMonitor.Api/LogicMonitor.Api.csproj index a7577bd2..2c3b9484 100644 --- a/LogicMonitor.Api/LogicMonitor.Api.csproj +++ b/LogicMonitor.Api/LogicMonitor.Api.csproj @@ -27,7 +27,7 @@ snupkg - Removed backup functionality. + Added IHasName and IHasDescription to NamedItem and DescribedItem. Updated CreationDtos to use these new Interfaces. 57aaa0e7-815d-4065-9339-f3f070bed01e diff --git a/LogicMonitor.Api/NamedItem.cs b/LogicMonitor.Api/NamedItem.cs index 43bf0ce1..6b36ff6d 100644 --- a/LogicMonitor.Api/NamedItem.cs +++ b/LogicMonitor.Api/NamedItem.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api; /// LogicMonitor named item /// [DataContract] -public abstract class NamedItem : DescribedItem +public abstract class NamedItem : DescribedItem, IHasName { /// /// The LogicMonitor Name diff --git a/LogicMonitor.Api/Netscans/NetscanCreationDto.cs b/LogicMonitor.Api/Netscans/NetscanCreationDto.cs index 0a5dc535..6f940ea4 100644 --- a/LogicMonitor.Api/Netscans/NetscanCreationDto.cs +++ b/LogicMonitor.Api/Netscans/NetscanCreationDto.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Netscans; /// A class for crating NetscanPolicies /// [DataContract] -public class NetscanCreationDto : CreationDto +public class NetscanCreationDto : CreationDto, IHasName, IHasDescription { /// /// Constructor diff --git a/LogicMonitor.Api/Netscans/NetscanGroupCreationDto.cs b/LogicMonitor.Api/Netscans/NetscanGroupCreationDto.cs index c584d99b..5a6a79d6 100644 --- a/LogicMonitor.Api/Netscans/NetscanGroupCreationDto.cs +++ b/LogicMonitor.Api/Netscans/NetscanGroupCreationDto.cs @@ -4,7 +4,7 @@ /// A Netscan Policy /// [DataContract] -public class NetscanGroupCreationDto : CreationDto +public class NetscanGroupCreationDto : CreationDto, IHasName, IHasDescription { /// /// Name diff --git a/LogicMonitor.Api/Reports/ReportGroupCreationDto.cs b/LogicMonitor.Api/Reports/ReportGroupCreationDto.cs index 92d4c00e..18fff989 100644 --- a/LogicMonitor.Api/Reports/ReportGroupCreationDto.cs +++ b/LogicMonitor.Api/Reports/ReportGroupCreationDto.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Reports; /// A ReportGroup creation DTO /// [DataContract] -public class ReportGroupCreationDto : CreationDto +public class ReportGroupCreationDto : CreationDto, IHasName, IHasDescription { /// /// The name diff --git a/LogicMonitor.Api/Settings/AlertRuleCreationDto.cs b/LogicMonitor.Api/Settings/AlertRuleCreationDto.cs index 876ecb0a..f7e8a095 100644 --- a/LogicMonitor.Api/Settings/AlertRuleCreationDto.cs +++ b/LogicMonitor.Api/Settings/AlertRuleCreationDto.cs @@ -4,7 +4,7 @@ /// A LogicMonitor alert rule creation DTO /// [DataContract] -public class AlertRuleCreationDto : CreationDto +public class AlertRuleCreationDto : CreationDto, IHasName, IHasDescription { /// /// The LogicMonitor Name diff --git a/LogicMonitor.Api/Settings/IntegrationCreationDto.cs b/LogicMonitor.Api/Settings/IntegrationCreationDto.cs index aa542c6f..0b23194d 100644 --- a/LogicMonitor.Api/Settings/IntegrationCreationDto.cs +++ b/LogicMonitor.Api/Settings/IntegrationCreationDto.cs @@ -8,7 +8,8 @@ /// Constructor /// /// The integration type -public abstract class IntegrationCreationDto(string type) : CreationDto where T : Integration +public abstract class IntegrationCreationDto(string type) + : CreationDto, IHasName where T : Integration { /// /// The LogicMonitor Name diff --git a/LogicMonitor.Api/Settings/RecipientGroupCreationDto.cs b/LogicMonitor.Api/Settings/RecipientGroupCreationDto.cs index a87ffbea..14a27382 100644 --- a/LogicMonitor.Api/Settings/RecipientGroupCreationDto.cs +++ b/LogicMonitor.Api/Settings/RecipientGroupCreationDto.cs @@ -4,7 +4,7 @@ /// An external alert destination /// [DataContract] -public class RecipientGroupCreationDto : CreationDto +public class RecipientGroupCreationDto : CreationDto, IHasName, IHasDescription { /// /// The group name diff --git a/LogicMonitor.Api/Topologies/TopologyGroupCreationDto.cs b/LogicMonitor.Api/Topologies/TopologyGroupCreationDto.cs index f7ea1adb..d390167d 100644 --- a/LogicMonitor.Api/Topologies/TopologyGroupCreationDto.cs +++ b/LogicMonitor.Api/Topologies/TopologyGroupCreationDto.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Topologies; /// TopologyGroup creation DTO /// [DataContract] -public class TopologyGroupCreationDto : CreationDto +public class TopologyGroupCreationDto : CreationDto, IHasName, IHasDescription { /// /// Name diff --git a/LogicMonitor.Api/Users/RoleCreationDto.cs b/LogicMonitor.Api/Users/RoleCreationDto.cs index a307e442..ed1db1f8 100644 --- a/LogicMonitor.Api/Users/RoleCreationDto.cs +++ b/LogicMonitor.Api/Users/RoleCreationDto.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Users; /// Role creation DTO /// [DataContract] -public class RoleCreationDto : CreationDto +public class RoleCreationDto : CreationDto, IHasName, IHasDescription { /// /// Name diff --git a/LogicMonitor.Api/Users/RoleGroupCreationDto.cs b/LogicMonitor.Api/Users/RoleGroupCreationDto.cs index e6f8c82e..44a043dd 100644 --- a/LogicMonitor.Api/Users/RoleGroupCreationDto.cs +++ b/LogicMonitor.Api/Users/RoleGroupCreationDto.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Users; /// RoleGroup creation DTO /// [DataContract] -public class RoleGroupCreationDto : CreationDto +public class RoleGroupCreationDto : CreationDto, IHasName, IHasDescription { /// /// Name diff --git a/LogicMonitor.Api/Users/UserGroupCreationDto.cs b/LogicMonitor.Api/Users/UserGroupCreationDto.cs index b24a7b2a..28e4c628 100644 --- a/LogicMonitor.Api/Users/UserGroupCreationDto.cs +++ b/LogicMonitor.Api/Users/UserGroupCreationDto.cs @@ -4,7 +4,7 @@ /// RoleGroup creation DTO /// [DataContract] -public class UserGroupCreationDto : CreationDto +public class UserGroupCreationDto : CreationDto, IHasName, IHasDescription { /// /// Name diff --git a/LogicMonitor.Api/Websites/WebsiteCreationDto.cs b/LogicMonitor.Api/Websites/WebsiteCreationDto.cs index 4b7cde45..7790446a 100644 --- a/LogicMonitor.Api/Websites/WebsiteCreationDto.cs +++ b/LogicMonitor.Api/Websites/WebsiteCreationDto.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Websites; /// A Website creation DTO /// [DataContract] -public class WebsiteCreationDto : CreationDto +public class WebsiteCreationDto : CreationDto, IHasName, IHasDescription { /// /// The website group id diff --git a/LogicMonitor.Api/Websites/WebsiteGroupCreationDto.cs b/LogicMonitor.Api/Websites/WebsiteGroupCreationDto.cs index 1db21e34..5b144f53 100644 --- a/LogicMonitor.Api/Websites/WebsiteGroupCreationDto.cs +++ b/LogicMonitor.Api/Websites/WebsiteGroupCreationDto.cs @@ -4,7 +4,7 @@ /// A ServiceGroup creation DTO /// [DataContract] -public class WebsiteGroupCreationDto : CreationDto +public class WebsiteGroupCreationDto : CreationDto, IHasName, IHasDescription { /// /// User permission From 8303e2b82206dffd6b6bbf730d185927dcd519fa Mon Sep 17 00:00:00 2001 From: Daniel Abbatt Date: Sun, 21 Jan 2024 08:53:01 +0000 Subject: [PATCH 2/7] Corrected type for with EmailIntegrationCreationDto --- LogicMonitor.Api/LogicMonitor.Api.csproj | 6 +++++- LogicMonitor.Api/Settings/EmailIntegrationCreationDto.cs | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/LogicMonitor.Api/LogicMonitor.Api.csproj b/LogicMonitor.Api/LogicMonitor.Api.csproj index 2c3b9484..c9d21011 100644 --- a/LogicMonitor.Api/LogicMonitor.Api.csproj +++ b/LogicMonitor.Api/LogicMonitor.Api.csproj @@ -27,7 +27,11 @@ snupkg - Added IHasName and IHasDescription to NamedItem and DescribedItem. Updated CreationDtos to use these new Interfaces. + + Added IHasName and IHasDescription to NamedItem and DescribedItem. + Updated CreationDtos to use these new Interfaces. + Corrected type for with EmailIntegrationCreationDto. + 57aaa0e7-815d-4065-9339-f3f070bed01e diff --git a/LogicMonitor.Api/Settings/EmailIntegrationCreationDto.cs b/LogicMonitor.Api/Settings/EmailIntegrationCreationDto.cs index 0d74b23c..a10fde93 100644 --- a/LogicMonitor.Api/Settings/EmailIntegrationCreationDto.cs +++ b/LogicMonitor.Api/Settings/EmailIntegrationCreationDto.cs @@ -9,7 +9,7 @@ public class EmailIntegrationCreationDto : IntegrationCreationDto /// Constructor /// - public EmailIntegrationCreationDto() : base("http") + public EmailIntegrationCreationDto() : base("email") { } /// From 3efadf0f6bba8020f36e115727171c77ffaa5a5c Mon Sep 17 00:00:00 2001 From: Daniel Abbatt Date: Sun, 21 Jan 2024 09:00:05 +0000 Subject: [PATCH 3/7] Fixed missing DataContract on IntegrationCreationDto --- LogicMonitor.Api/LogicMonitor.Api.csproj | 1 + LogicMonitor.Api/Settings/IntegrationCreationDto.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/LogicMonitor.Api/LogicMonitor.Api.csproj b/LogicMonitor.Api/LogicMonitor.Api.csproj index c9d21011..134c8627 100644 --- a/LogicMonitor.Api/LogicMonitor.Api.csproj +++ b/LogicMonitor.Api/LogicMonitor.Api.csproj @@ -31,6 +31,7 @@ Added IHasName and IHasDescription to NamedItem and DescribedItem. Updated CreationDtos to use these new Interfaces. Corrected type for with EmailIntegrationCreationDto. + Fixed missing DataContract on IntegrationCreationDto. 57aaa0e7-815d-4065-9339-f3f070bed01e diff --git a/LogicMonitor.Api/Settings/IntegrationCreationDto.cs b/LogicMonitor.Api/Settings/IntegrationCreationDto.cs index 0b23194d..3b516961 100644 --- a/LogicMonitor.Api/Settings/IntegrationCreationDto.cs +++ b/LogicMonitor.Api/Settings/IntegrationCreationDto.cs @@ -8,6 +8,7 @@ /// Constructor /// /// The integration type +[DataContract] public abstract class IntegrationCreationDto(string type) : CreationDto, IHasName where T : Integration { From 488a4876594ce5f624c22f199716b4b06363f3a3 Mon Sep 17 00:00:00 2001 From: Daniel Abbatt Date: Sun, 21 Jan 2024 09:27:05 +0000 Subject: [PATCH 4/7] Added Description to EmailIntegrationCreationDto --- LogicMonitor.Api/LogicMonitor.Api.csproj | 1 + LogicMonitor.Api/Settings/EmailIntegrationCreationDto.cs | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/LogicMonitor.Api/LogicMonitor.Api.csproj b/LogicMonitor.Api/LogicMonitor.Api.csproj index 134c8627..6100d292 100644 --- a/LogicMonitor.Api/LogicMonitor.Api.csproj +++ b/LogicMonitor.Api/LogicMonitor.Api.csproj @@ -32,6 +32,7 @@ Updated CreationDtos to use these new Interfaces. Corrected type for with EmailIntegrationCreationDto. Fixed missing DataContract on IntegrationCreationDto. + Added Description to EmailIntegrationCreationDto. 57aaa0e7-815d-4065-9339-f3f070bed01e diff --git a/LogicMonitor.Api/Settings/EmailIntegrationCreationDto.cs b/LogicMonitor.Api/Settings/EmailIntegrationCreationDto.cs index a10fde93..887b00f2 100644 --- a/LogicMonitor.Api/Settings/EmailIntegrationCreationDto.cs +++ b/LogicMonitor.Api/Settings/EmailIntegrationCreationDto.cs @@ -4,7 +4,7 @@ /// Email Integration Creation Dto /// [DataContract] -public class EmailIntegrationCreationDto : IntegrationCreationDto +public class EmailIntegrationCreationDto : IntegrationCreationDto, IHasDescription { /// /// Constructor @@ -35,4 +35,10 @@ public EmailIntegrationCreationDto() : base("email") /// [DataMember(Name = "body")] public string Body { get; set; } = string.Empty; + + /// + /// The description + /// + [DataMember(Name = "description")] + public string Description { get; set; } = string.Empty; } From a3d24fb03a1f2f583555ec4df7650e66282d5878 Mon Sep 17 00:00:00 2001 From: Roland Banks Date: Wed, 24 Jan 2024 16:08:54 +0700 Subject: [PATCH 5/7] Added Report Creation DTO, and the RunReportById client method. --- LogicMonitor.Api.Test/Reports/ReportTests.cs | 38 +++++++++ LogicMonitor.Api/Data/RunReportRequest.cs | 14 ++++ LogicMonitor.Api/Data/RunReportResponse.cs | 26 ++++++ LogicMonitor.Api/LogicMonitor.Api.csproj | 2 +- LogicMonitor.Api/LogicMonitorClient_Report.cs | 16 ++++ LogicMonitor.Api/Reports/ReportCreationDto.cs | 80 +++++++++++++++++++ 6 files changed, 175 insertions(+), 1 deletion(-) create mode 100644 LogicMonitor.Api/Data/RunReportRequest.cs create mode 100644 LogicMonitor.Api/Data/RunReportResponse.cs create mode 100644 LogicMonitor.Api/LogicMonitorClient_Report.cs create mode 100644 LogicMonitor.Api/Reports/ReportCreationDto.cs diff --git a/LogicMonitor.Api.Test/Reports/ReportTests.cs b/LogicMonitor.Api.Test/Reports/ReportTests.cs index 4adcfcaa..48b3a394 100644 --- a/LogicMonitor.Api.Test/Reports/ReportTests.cs +++ b/LogicMonitor.Api.Test/Reports/ReportTests.cs @@ -22,6 +22,44 @@ public async Task GetAllReports() reports.Should().NotBeNullOrEmpty(); } + + [Fact] + public async Task RunReportById() + { + var response = + await LogicMonitorClient.RunReportById(156, default) + .ConfigureAwait(true); + + response.Should().NotBeNull(); + response.ResultUrl.Should().NotBeNullOrEmpty(); + } + + [Fact] + public async Task CreateAndDeleteReport() + { + var sDate = DateTime.UtcNow.AddDays(-1); + var eDate = sDate.AddHours(1); + + // Create it + var report = + await LogicMonitorClient.CreateAsync(new ReportCreationDto + { + Name = "Temporary Report 5 - can delete", + Description = "Temporary Report - can delete", + Format = "PDF", + Type = "Dashboard", + GroupId = 375, + DateRange = $"{sDate.ToString("yyyy-MM-dd HH:mm")} TO {eDate.ToString("yyyy-MM-dd HH:mm")}", + DashboardId = 205 + }, + default) + .ConfigureAwait(true); + + report.Should().NotBeNull(); + + await LogicMonitorClient.DeleteAsync(report.Id, default).ConfigureAwait(true); + } + [Fact] public async Task CrudReportGroups() { diff --git a/LogicMonitor.Api/Data/RunReportRequest.cs b/LogicMonitor.Api/Data/RunReportRequest.cs new file mode 100644 index 00000000..ac021566 --- /dev/null +++ b/LogicMonitor.Api/Data/RunReportRequest.cs @@ -0,0 +1,14 @@ +namespace LogicMonitor.Api.Data; + +/// +/// A run report request +/// +[DataContract] +public class RunReportRequest +{ + /// + /// The With Admin ID + /// + [DataMember(Name = "withAdminId")] + public int WithAdminId { get; set; } = 0; +} diff --git a/LogicMonitor.Api/Data/RunReportResponse.cs b/LogicMonitor.Api/Data/RunReportResponse.cs new file mode 100644 index 00000000..1efc0e44 --- /dev/null +++ b/LogicMonitor.Api/Data/RunReportResponse.cs @@ -0,0 +1,26 @@ +namespace LogicMonitor.Api.Data; + +/// +/// A run report response +/// +[DataContract] +public class RunReportResponse +{ + /// + /// The report ID + /// + [DataMember(Name = "reportId")] + public int ReportId { get; set; } + + /// + /// The task ID + /// + [DataMember(Name = "taskId")] + public long TaskId { get; set; } + + /// + /// The result URL + /// + [DataMember(Name = "resulturl")] + public string ResultUrl { get; set; } = string.Empty; +} diff --git a/LogicMonitor.Api/LogicMonitor.Api.csproj b/LogicMonitor.Api/LogicMonitor.Api.csproj index aaf97741..2eba272f 100644 --- a/LogicMonitor.Api/LogicMonitor.Api.csproj +++ b/LogicMonitor.Api/LogicMonitor.Api.csproj @@ -27,7 +27,7 @@ snupkg - Added acknowledgement of collector down alerts. + Added Report Creation DTO, and the RunReportById client method. 57aaa0e7-815d-4065-9339-f3f070bed01e diff --git a/LogicMonitor.Api/LogicMonitorClient_Report.cs b/LogicMonitor.Api/LogicMonitorClient_Report.cs new file mode 100644 index 00000000..a3c6ee4c --- /dev/null +++ b/LogicMonitor.Api/LogicMonitorClient_Report.cs @@ -0,0 +1,16 @@ +namespace LogicMonitor.Api; + +/// +/// Report interaction +/// +public partial class LogicMonitorClient +{ + /// + /// Runs a Report by ID and returns + /// + /// The report ID to run + /// An optional cancellation token + /// The website + public Task RunReportById(int reportId, CancellationToken cancellationToken = default) + => PostAsync(new RunReportRequest(), $"report/reports/{reportId}/executions", cancellationToken); +} diff --git a/LogicMonitor.Api/Reports/ReportCreationDto.cs b/LogicMonitor.Api/Reports/ReportCreationDto.cs new file mode 100644 index 00000000..95bc9e80 --- /dev/null +++ b/LogicMonitor.Api/Reports/ReportCreationDto.cs @@ -0,0 +1,80 @@ +namespace LogicMonitor.Api.Reports; + +/// +/// A ReportGroup creation DTO. This is incomplete i.e. does not yet include properties to set a schedule or recipients +/// +[DataContract] +public class ReportCreationDto : CreationDto +{ + /// + /// The type, e.g Dashboard + /// + [DataMember(Name = "type")] + public string Type { get; set; } = string.Empty; + + /// + /// The Group ID + /// + [DataMember(Name = "groupId")] + public int GroupId { get; set; } + + /// + /// The name + /// + [DataMember(Name = "name")] + public string Name { get; set; } = string.Empty; + + /// + /// The description + /// + [DataMember(Name = "description")] + public string Description { get; set; } = string.Empty; + + /// + /// The format - HTML or PDF + /// + [DataMember(Name = "format")] + public string Format { get; set; } = "HTML"; + + /// + /// The expiry type - High Flexibiilty or High Security + /// + [DataMember(Name = "reportLinkExpire")] + public string ReportLinkExpire { get; set; } = "High Flexibility"; + + /// + /// The date range + /// + [DataMember(Name = "dateRange")] + public string DateRange { get; set; } = "Default"; + + /// + /// The Dashboard ID + /// + [DataMember(Name = "dashboardId")] + public int DashboardId { get; set; } + + /// + /// The display name used in the generated report (when run) + /// + [DataMember(Name = "displayName")] + public string DisplayName { get; set; } = string.Empty; + + /// + /// Whether to display the generated report's URL on the output + /// + [DataMember(Name = "displayLink")] + public bool DisplayLink { get; set; } + + /// + /// Whether to display the generated report's URL on the output + /// + [DataMember(Name = "delivery")] + public string Delivery { get; set; } = "none"; + + /// + /// ToString override + /// + /// Name + public override string ToString() => Name; +} From 4e0d570c67b6917b5e12a4f18e0a1f83b393e3d6 Mon Sep 17 00:00:00 2001 From: Daniel Abbatt Date: Wed, 24 Jan 2024 11:07:55 +0000 Subject: [PATCH 6/7] Added IHasName to RecipientGroup --- LogicMonitor.Api/LogicMonitor.Api.csproj | 1 + LogicMonitor.Api/Settings/RecipientGroup.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/LogicMonitor.Api/LogicMonitor.Api.csproj b/LogicMonitor.Api/LogicMonitor.Api.csproj index 6100d292..7b4ccdc6 100644 --- a/LogicMonitor.Api/LogicMonitor.Api.csproj +++ b/LogicMonitor.Api/LogicMonitor.Api.csproj @@ -33,6 +33,7 @@ Corrected type for with EmailIntegrationCreationDto. Fixed missing DataContract on IntegrationCreationDto. Added Description to EmailIntegrationCreationDto. + Added IHasName to RecipientGroup. 57aaa0e7-815d-4065-9339-f3f070bed01e diff --git a/LogicMonitor.Api/Settings/RecipientGroup.cs b/LogicMonitor.Api/Settings/RecipientGroup.cs index 47b4a75f..5b08853f 100644 --- a/LogicMonitor.Api/Settings/RecipientGroup.cs +++ b/LogicMonitor.Api/Settings/RecipientGroup.cs @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Settings; /// An external alert destination /// [DataContract] -public class RecipientGroup : DescribedItem, IHasEndpoint +public class RecipientGroup : DescribedItem, IHasEndpoint, IHasName { /// /// The group name From 53f526f50ef98dca4b779c0bf2314160da85d575 Mon Sep 17 00:00:00 2001 From: Daniel Abbatt Date: Wed, 24 Jan 2024 11:42:17 +0000 Subject: [PATCH 7/7] Added missing DataContract from EscalationChainCreationDto --- LogicMonitor.Api/Alerts/EscalationChainCreationDto.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/LogicMonitor.Api/Alerts/EscalationChainCreationDto.cs b/LogicMonitor.Api/Alerts/EscalationChainCreationDto.cs index 02a38ded..b1fd20c1 100644 --- a/LogicMonitor.Api/Alerts/EscalationChainCreationDto.cs +++ b/LogicMonitor.Api/Alerts/EscalationChainCreationDto.cs @@ -3,6 +3,7 @@ /// /// An Escalation chain creation DTO /// +[DataContract] public class EscalationChainCreationDto : CreationDto, IHasName, IHasDescription {