diff --git a/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Contracts/IWorkflowDefinitionsApi.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Contracts/IWorkflowDefinitionsApi.cs index 66ec28614..227ce2e78 100644 --- a/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Contracts/IWorkflowDefinitionsApi.cs +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Contracts/IWorkflowDefinitionsApi.cs @@ -61,6 +61,22 @@ public interface IWorkflowDefinitionsApi /// The cancellation token. [Delete("/workflow-definitions/{definitionId}")] Task DeleteAsync(string definitionId, CancellationToken cancellationToken = default); + + /// + /// Publishes a workflow definition. + /// + /// The ID of the workflow definition to publish. + /// The cancellation token. + [Post("/workflow-definitions/{definitionId}/publish")] + Task PublishAsync(string definitionId, CancellationToken cancellationToken = default); + + /// + /// Retracts a workflow definition. + /// + /// The ID of the workflow definition to retract. + /// The cancellation token. + [Post("/workflow-definitions/{definitionId}/retract")] + Task RetractAsync(string definitionId, CancellationToken cancellationToken = default); /// /// Deletes many workflow definitions. @@ -78,6 +94,14 @@ public interface IWorkflowDefinitionsApi [Post("/bulk-actions/publish/workflow-definitions/by-definition-ids")] Task BulkPublishAsync(BulkPublishWorkflowDefinitionsRequest request, CancellationToken cancellationToken = default); + /// + /// Retracts many workflow definitions. + /// + /// The request containing the IDs of the workflow definitions to retract. + /// The cancellation token. + [Post("/bulk-actions/retract/workflow-definitions/by-definition-ids")] + Task BulkRetractAsync(BulkRetractWorkflowDefinitionsRequest request, CancellationToken cancellationToken = default); + /// /// Exports a workflow definition. /// diff --git a/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/BulkPublishWorkflowDefinitionsRequest.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/BulkPublishWorkflowDefinitionsRequest.cs index fef97abe9..527761704 100644 --- a/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/BulkPublishWorkflowDefinitionsRequest.cs +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/BulkPublishWorkflowDefinitionsRequest.cs @@ -6,9 +6,9 @@ namespace Elsa.Api.Client.Resources.WorkflowDefinitions.Models; public class BulkPublishWorkflowDefinitionsRequest { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// The IDs of the workflow definitions to delete. + /// The IDs of the workflow definitions to publish. public BulkPublishWorkflowDefinitionsRequest(IEnumerable definitionIds) { DefinitionIds = definitionIds.ToArray(); diff --git a/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/BulkRetractWorkflowDefinitionsRequest.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/BulkRetractWorkflowDefinitionsRequest.cs new file mode 100644 index 000000000..fdd270aa1 --- /dev/null +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/BulkRetractWorkflowDefinitionsRequest.cs @@ -0,0 +1,21 @@ +namespace Elsa.Api.Client.Resources.WorkflowDefinitions.Models; + +/// +/// A request to retract many workflow definitions. +/// +public class BulkRetractWorkflowDefinitionsRequest +{ + /// + /// Initializes a new instance of the class. + /// + /// The IDs of the workflow definitions to retract. + public BulkRetractWorkflowDefinitionsRequest(IEnumerable definitionIds) + { + DefinitionIds = definitionIds.ToArray(); + } + + /// + /// Gets or sets the IDs of the workflow definitions to delete. + /// + public string[] DefinitionIds { get; set; } +} \ No newline at end of file diff --git a/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/BulkRetractWorkflowDefinitionsResponse.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/BulkRetractWorkflowDefinitionsResponse.cs new file mode 100644 index 000000000..5a8638a0c --- /dev/null +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/BulkRetractWorkflowDefinitionsResponse.cs @@ -0,0 +1,9 @@ +namespace Elsa.Api.Client.Resources.WorkflowDefinitions.Models; + +/// +/// The response from a request to publish workflow definitions. +/// +public record BulkRetractWorkflowDefinitionsResponse( + ICollection Retracted, + ICollection AlreadyRetracted, + ICollection NotFound); \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkRetract/Models.cs b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkRetract/Models.cs index 945486de3..307b7e2ef 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkRetract/Models.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkRetract/Models.cs @@ -1,20 +1,25 @@ namespace Elsa.Workflows.Api.Endpoints.WorkflowDefinitions.BulkRetract; -public class Request +internal class Request { public ICollection DefinitionIds { get; set; } = default!; } -public class Response +internal class Response { - public Response(ICollection retracted, ICollection notPublished, ICollection notFound) + public Response(ICollection retracted, ICollection alreadyRetracted, ICollection notFound) { Retracted = retracted; - NotPublished = notPublished; + AlreadyRetracted = alreadyRetracted; + NotPublished = alreadyRetracted; NotFound = notFound; } public ICollection Retracted { get; } + public ICollection AlreadyRetracted { get; } + + [Obsolete("Use AlreadyRetracted instead")] public ICollection NotPublished { get; } + public ICollection NotFound { get; } } \ No newline at end of file