using FastEndpoints; using MediatR; using Workflow.Application.Features.WorkflowInstances.Commands; using Workflow.Domain.Common; namespace Workflow.Api.Endpoints.WorkflowInstance; public class WithdrawWorkflowInstanceEndpoint(IMediator mediator, ICurrentUserContext userContext) : EndpointWithoutRequest { public override void Configure() { Post("/workflow-instances/{Id}/withdraw"); AllowAnonymous(); Summary(s => { s.Summary = "Withdraw a workflow instance (initiator only)"; }); } public override async Task HandleAsync(CancellationToken ct) { var id = Route("Id"); var userId = userContext.GetUserId(); await mediator.Send(new WithdrawWorkflowInstanceCommand(id, userId), ct); await Send.OkAsync(ct); } }