using FastEndpoints; using MediatR; using Workflow.Application.Features.WorkflowInstances.Commands; namespace Workflow.Api.Endpoints.WorkflowInstance; public class WithdrawWorkflowInstanceEndpoint : Endpoint { private readonly IMediator _mediator; public WithdrawWorkflowInstanceEndpoint(IMediator mediator) => _mediator = mediator; 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(WithdrawWorkflowInstanceRequest req, CancellationToken ct) { var command = new WithdrawWorkflowInstanceCommand(req.Id, req.UserId); await _mediator.Send(command, ct); await Send.OkAsync(ct); } } public class WithdrawWorkflowInstanceRequest { public Guid Id { get; set; } public Guid UserId { get; set; } }