diff --git a/src/Messaging/Events/ExternalAppRequestEvent.cs b/src/Messaging/Events/ExternalAppRequestEvent.cs
index 927be8a..f50ec3e 100755
--- a/src/Messaging/Events/ExternalAppRequestEvent.cs
+++ b/src/Messaging/Events/ExternalAppRequestEvent.cs
@@ -1,12 +1,92 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+/*
+ * Copyright 2021-2023 MONAI Consortium
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System.ComponentModel.DataAnnotations;
+using System.Text.Json.Serialization;
+using Ardalis.GuardClauses;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
namespace Monai.Deploy.Messaging.Events
{
- internal class ExternalAppRequestEvent
+ public class ExternalAppRequestEvent
{
+ ///
+ /// Gets or sets the workflow instanceID generated by the Workflow Manager.
+ ///
+ [JsonProperty(PropertyName = "workflow_instance_id")]
+ [JsonPropertyName("workflow_instance_id")]
+ [Required]
+ public string WorkflowInstanceId { get; set; } = default!;
+
+ ///
+ /// Gets or sets the export task ID generated by the Workflow Manager.
+ ///
+ [JsonProperty(PropertyName = "export_task_id")]
+ [JsonPropertyName("export_task_id")]
+ [Required]
+ public string ExportTaskId { get; set; } = default!;
+
+ ///
+ /// Gets or sets the state of the export task.
+ ///
+ [JsonProperty(PropertyName = "status")]
+ [JsonPropertyName("status")]
+ [Newtonsoft.Json.JsonConverter(typeof(StringEnumConverter))]
+ [System.Text.Json.Serialization.JsonConverter(typeof(JsonStringEnumConverter))]
+ [Required]
+ public ExportStatus Status { get; set; }
+
+ ///
+ /// Gets or sets error messages, if any, when exporting.
+ ///
+ [JsonProperty(PropertyName = "message")]
+ [JsonPropertyName("message")]
+ public string Message { get; set; } = default!;
+
+ ///
+ /// Gets or sets files exported with its status
+ ///
+ [JsonProperty(PropertyName = "file_statuses")]
+ [JsonPropertyName("file_statuses")]
+ public Dictionary FileStatuses { get; set; }
+
+ ///
+ /// the target to export too
+ ///
+ public DataOrigin? Target { get; set; }
+
+ [Newtonsoft.Json.JsonConstructor]
+ [System.Text.Json.Serialization.JsonConstructor]
+ public ExternalAppRequestEvent()
+ {
+ Status = ExportStatus.Unknown;
+ FileStatuses = new Dictionary();
+ }
+
+ public ExternalAppRequestEvent(ExportRequestEvent exportRequest, ExportStatus exportStatus, Dictionary fileStatuses)
+ {
+ Guard.Against.Null(exportRequest, nameof(exportRequest));
+ Guard.Against.Null(exportStatus, nameof(exportStatus));
+ Guard.Against.Null(fileStatuses, nameof(fileStatuses));
+
+ WorkflowInstanceId = exportRequest.WorkflowInstanceId;
+ ExportTaskId = exportRequest.ExportTaskId;
+ Message = string.Join(System.Environment.NewLine, exportRequest.ErrorMessages);
+ Status = exportStatus;
+ FileStatuses = fileStatuses;
+ }
}
}