diff --git a/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeDocResultQuery.cs b/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeDocResultQuery.cs
index 73760944..f2bb0f0e 100644
--- a/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeDocResultQuery.cs
+++ b/EnvelopeGenerator.Application/Envelopes/Queries/ReadSingleEnvelopeDocResultQuery.cs
@@ -8,8 +8,13 @@ namespace EnvelopeGenerator.Application.Envelopes.Queries;
///
/// Repräsentiert eine Abfrage für Umschläge.
///
-///
-public record ReadSingleEnvelopeDocResultQuery(ReadSingleEnvelopeQuery Envelope) : EnvelopeQueryBase, IRequest;
+public record ReadSingleEnvelopeDocResultQuery() : EnvelopeQueryBase, IRequest
+{
+ ///
+ ///
+ ///
+ public ReadSingleEnvelopeQuery Envelope { get; set; } = null!;
+}
///
/// Verarbeitet und liefert passende -Ergebnisse.
diff --git a/EnvelopeGenerator.ServiceHost/Controllers/FinalizeDocumentController.cs b/EnvelopeGenerator.ServiceHost/Controllers/FinalizeDocumentController.cs
new file mode 100644
index 00000000..d5056901
--- /dev/null
+++ b/EnvelopeGenerator.ServiceHost/Controllers/FinalizeDocumentController.cs
@@ -0,0 +1,29 @@
+using EnvelopeGenerator.Application.Envelopes.Queries;
+using EnvelopeGenerator.ServiceHost.Jobs;
+using MediatR;
+using Microsoft.AspNetCore.Mvc;
+
+namespace EnvelopeGenerator.ServiceHost.Controllers;
+
+///
+///
+///
+///
+///
+[Route("api/[controller]")]
+[ApiController]
+public class FinalizeDocumentController(IMediator mediator, FinalizeDocumentJob job) : ControllerBase
+{
+ [HttpGet]
+ public async Task FinalizeEnvelopeDocument([FromQuery] ReadSingleEnvelopeQuery query, [FromQuery] bool forceRegenerate = false, CancellationToken cancel = default)
+ {
+ var envelope = await mediator.Send(query, cancel);
+
+ // TODO: migrate forceRegenerate input to FinalizeDocumentJob as property and remove this check from controller
+ if (envelope.DocResult is null || forceRegenerate)
+ await job.ExecuteAsync(envelope, cancel);
+
+ var docResult = await mediator.Send(new ReadSingleEnvelopeDocResultQuery() { Envelope = query }, cancel);
+ return File(docResult, "application/pdf", $"envelope_{query.Uuid}.pdf");
+ }
+}
\ No newline at end of file