diff --git a/src/ScadaLink.Commons/Messages/Management/AuditLogCommands.cs b/src/ScadaLink.Commons/Messages/Management/AuditLogCommands.cs new file mode 100644 index 0000000..94306eb --- /dev/null +++ b/src/ScadaLink.Commons/Messages/Management/AuditLogCommands.cs @@ -0,0 +1,6 @@ +namespace ScadaLink.Commons.Messages.Management; + +public record QueryAuditLogCommand( + string? User = null, string? EntityType = null, string? Action = null, + DateTimeOffset? From = null, DateTimeOffset? To = null, + int Page = 1, int PageSize = 50); diff --git a/src/ScadaLink.Commons/Messages/Management/DataConnectionCommands.cs b/src/ScadaLink.Commons/Messages/Management/DataConnectionCommands.cs new file mode 100644 index 0000000..142a610 --- /dev/null +++ b/src/ScadaLink.Commons/Messages/Management/DataConnectionCommands.cs @@ -0,0 +1,9 @@ +namespace ScadaLink.Commons.Messages.Management; + +public record ListDataConnectionsCommand; +public record GetDataConnectionCommand(int DataConnectionId); +public record CreateDataConnectionCommand(string Name, string Protocol, string? Configuration); +public record UpdateDataConnectionCommand(int DataConnectionId, string Name, string Protocol, string? Configuration); +public record DeleteDataConnectionCommand(int DataConnectionId); +public record AssignDataConnectionToSiteCommand(int DataConnectionId, int SiteId); +public record UnassignDataConnectionFromSiteCommand(int AssignmentId); diff --git a/src/ScadaLink.Commons/Messages/Management/DeploymentCommands.cs b/src/ScadaLink.Commons/Messages/Management/DeploymentCommands.cs new file mode 100644 index 0000000..ec414dc --- /dev/null +++ b/src/ScadaLink.Commons/Messages/Management/DeploymentCommands.cs @@ -0,0 +1,4 @@ +namespace ScadaLink.Commons.Messages.Management; + +public record MgmtDeployArtifactsCommand(int? SiteId = null); +public record QueryDeploymentsCommand(int? InstanceId = null, string? Status = null, int Page = 1, int PageSize = 50); diff --git a/src/ScadaLink.Commons/Messages/Management/ExternalSystemCommands.cs b/src/ScadaLink.Commons/Messages/Management/ExternalSystemCommands.cs new file mode 100644 index 0000000..9dbd386 --- /dev/null +++ b/src/ScadaLink.Commons/Messages/Management/ExternalSystemCommands.cs @@ -0,0 +1,7 @@ +namespace ScadaLink.Commons.Messages.Management; + +public record ListExternalSystemsCommand; +public record GetExternalSystemCommand(int ExternalSystemId); +public record CreateExternalSystemCommand(string Name, string EndpointUrl, string AuthType, string? AuthConfiguration); +public record UpdateExternalSystemCommand(int ExternalSystemId, string Name, string EndpointUrl, string AuthType, string? AuthConfiguration); +public record DeleteExternalSystemCommand(int ExternalSystemId); diff --git a/src/ScadaLink.Commons/Messages/Management/HealthCommands.cs b/src/ScadaLink.Commons/Messages/Management/HealthCommands.cs new file mode 100644 index 0000000..98e3ea6 --- /dev/null +++ b/src/ScadaLink.Commons/Messages/Management/HealthCommands.cs @@ -0,0 +1,4 @@ +namespace ScadaLink.Commons.Messages.Management; + +public record GetHealthSummaryCommand; +public record GetSiteHealthCommand(string SiteIdentifier); diff --git a/src/ScadaLink.Commons/Messages/Management/InstanceCommands.cs b/src/ScadaLink.Commons/Messages/Management/InstanceCommands.cs new file mode 100644 index 0000000..e594cb1 --- /dev/null +++ b/src/ScadaLink.Commons/Messages/Management/InstanceCommands.cs @@ -0,0 +1,10 @@ +namespace ScadaLink.Commons.Messages.Management; + +public record ListInstancesCommand(int? SiteId = null, int? TemplateId = null, string? SearchTerm = null); +public record GetInstanceCommand(int InstanceId); +public record CreateInstanceCommand(string UniqueName, int TemplateId, int SiteId, int? AreaId = null); +public record MgmtDeployInstanceCommand(int InstanceId); +public record MgmtEnableInstanceCommand(int InstanceId); +public record MgmtDisableInstanceCommand(int InstanceId); +public record MgmtDeleteInstanceCommand(int InstanceId); +public record SetConnectionBindingsCommand(int InstanceId, IReadOnlyList<(string AttributeName, int DataConnectionId)> Bindings); diff --git a/src/ScadaLink.Commons/Messages/Management/ManagementEnvelope.cs b/src/ScadaLink.Commons/Messages/Management/ManagementEnvelope.cs new file mode 100644 index 0000000..db6eaa4 --- /dev/null +++ b/src/ScadaLink.Commons/Messages/Management/ManagementEnvelope.cs @@ -0,0 +1,11 @@ +namespace ScadaLink.Commons.Messages.Management; + +public record AuthenticatedUser( + string Username, string DisplayName, + IReadOnlyList Roles, IReadOnlyList PermittedSiteIds); + +public record ManagementEnvelope(AuthenticatedUser User, object Command, string CorrelationId); + +public record ManagementSuccess(string CorrelationId, object? Data); +public record ManagementError(string CorrelationId, string Error, string ErrorCode); +public record ManagementUnauthorized(string CorrelationId, string Message); diff --git a/src/ScadaLink.Commons/Messages/Management/NotificationCommands.cs b/src/ScadaLink.Commons/Messages/Management/NotificationCommands.cs new file mode 100644 index 0000000..86b47a0 --- /dev/null +++ b/src/ScadaLink.Commons/Messages/Management/NotificationCommands.cs @@ -0,0 +1,9 @@ +namespace ScadaLink.Commons.Messages.Management; + +public record ListNotificationListsCommand; +public record GetNotificationListCommand(int NotificationListId); +public record CreateNotificationListCommand(string Name, IReadOnlyList RecipientEmails); +public record UpdateNotificationListCommand(int NotificationListId, string Name, IReadOnlyList RecipientEmails); +public record DeleteNotificationListCommand(int NotificationListId); +public record ListSmtpConfigsCommand; +public record UpdateSmtpConfigCommand(int SmtpConfigId, string Server, int Port, string AuthMode, string FromAddress); diff --git a/src/ScadaLink.Commons/Messages/Management/SecurityCommands.cs b/src/ScadaLink.Commons/Messages/Management/SecurityCommands.cs new file mode 100644 index 0000000..c89b6c4 --- /dev/null +++ b/src/ScadaLink.Commons/Messages/Management/SecurityCommands.cs @@ -0,0 +1,9 @@ +namespace ScadaLink.Commons.Messages.Management; + +public record ListApiKeysCommand; +public record CreateApiKeyCommand(string Name); +public record DeleteApiKeyCommand(int ApiKeyId); +public record ListRoleMappingsCommand; +public record CreateRoleMappingCommand(string LdapGroupName, string Role); +public record UpdateRoleMappingCommand(int MappingId, string LdapGroupName, string Role); +public record DeleteRoleMappingCommand(int MappingId); diff --git a/src/ScadaLink.Commons/Messages/Management/SiteCommands.cs b/src/ScadaLink.Commons/Messages/Management/SiteCommands.cs new file mode 100644 index 0000000..919c9e0 --- /dev/null +++ b/src/ScadaLink.Commons/Messages/Management/SiteCommands.cs @@ -0,0 +1,10 @@ +namespace ScadaLink.Commons.Messages.Management; + +public record ListSitesCommand; +public record GetSiteCommand(int SiteId); +public record CreateSiteCommand(string Name, string SiteIdentifier, string? Description); +public record UpdateSiteCommand(int SiteId, string Name, string? Description); +public record DeleteSiteCommand(int SiteId); +public record ListAreasCommand(int SiteId); +public record CreateAreaCommand(int SiteId, string Name, int? ParentAreaId); +public record DeleteAreaCommand(int AreaId); diff --git a/src/ScadaLink.Commons/Messages/Management/TemplateCommands.cs b/src/ScadaLink.Commons/Messages/Management/TemplateCommands.cs new file mode 100644 index 0000000..7ffd940 --- /dev/null +++ b/src/ScadaLink.Commons/Messages/Management/TemplateCommands.cs @@ -0,0 +1,8 @@ +namespace ScadaLink.Commons.Messages.Management; + +public record ListTemplatesCommand; +public record GetTemplateCommand(int TemplateId); +public record CreateTemplateCommand(string Name, string? Description, int? ParentTemplateId); +public record UpdateTemplateCommand(int TemplateId, string Name, string? Description, int? ParentTemplateId); +public record DeleteTemplateCommand(int TemplateId); +public record ValidateTemplateCommand(int TemplateId);