diff --git a/EnvelopeGenerator.ReceiverUI/Models/AnnotationDto.cs b/EnvelopeGenerator.ReceiverUI/Models/AnnotationDto.cs
index fcc48e9b..f0172832 100644
--- a/EnvelopeGenerator.ReceiverUI/Models/AnnotationDto.cs
+++ b/EnvelopeGenerator.ReceiverUI/Models/AnnotationDto.cs
@@ -13,6 +13,7 @@ namespace EnvelopeGenerator.ReceiverUI.Models;
/// Difference from GDPicture: GDPicture uses PDF points with bottom-left origin (PDF standard); Y is flipped.
/// Convert: yDX = (pageHeightPt - yGD - elemHeightPt) * (100.0 / 72.0)
///
+[Obsolete("Use SignatureDto with SignatureService.")]
public record AnnotationDto
{
/// Unique identifier of the annotation.
diff --git a/EnvelopeGenerator.ReceiverUI/Models/SignatureDto.cs b/EnvelopeGenerator.ReceiverUI/Models/SignatureDto.cs
new file mode 100644
index 00000000..8c5acc35
--- /dev/null
+++ b/EnvelopeGenerator.ReceiverUI/Models/SignatureDto.cs
@@ -0,0 +1,13 @@
+namespace EnvelopeGenerator.ReceiverUI.Models;
+
+public class SignatureDto
+{
+ public int Id { get; set; }
+
+ public double X { get; set; }
+
+ public double Y { get; set; }
+
+ public int Page { get; set; }
+
+}
\ No newline at end of file
diff --git a/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeViewer.razor b/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeViewer.razor
index 80135751..66af967d 100644
--- a/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeViewer.razor
+++ b/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeViewer.razor
@@ -8,7 +8,7 @@
@inject IOptions AppOptions
@inject IOptions PdfViewerOptions
@inject IJSRuntime JSRuntime
-@inject AnnotationService AnnotService
+@inject SignatureService SignatureService
@implements IAsyncDisposable
@@ -212,7 +212,9 @@ protected override async Task OnInitializedAsync() {
_errorMessage = $"Dokument konnte nicht geladen werden. HTTP Status: {statusCode}";
}
- var annots = await AnnotService.GetAnnotationsAsync(EnvelopeKey);
+ var signatures = await SignatureService.GetAsync(EnvelopeKey);
+
+ await JSRuntime.InvokeVoidAsync("console.log", signatures);
} catch (Exception ex) {
_errorMessage = $"Fehler: {ex.Message}";
diff --git a/EnvelopeGenerator.ReceiverUI/Services/AnnotationService.cs b/EnvelopeGenerator.ReceiverUI/Services/AnnotationService.cs
index 5fde8210..ead7437c 100644
--- a/EnvelopeGenerator.ReceiverUI/Services/AnnotationService.cs
+++ b/EnvelopeGenerator.ReceiverUI/Services/AnnotationService.cs
@@ -14,6 +14,7 @@ namespace EnvelopeGenerator.ReceiverUI.Services;
/// fake-data/annotations.json. To switch to real data, update the
/// YARP route in yarp.json — no code change required.
///
+[Obsolete("Use SignatureService.")]
public class AnnotationService(HttpClient http, IOptions apiOptions)
{
private static readonly JsonSerializerOptions _jsonOptions = new(JsonSerializerDefaults.Web);
diff --git a/EnvelopeGenerator.ReceiverUI/Services/SignatureService.cs b/EnvelopeGenerator.ReceiverUI/Services/SignatureService.cs
new file mode 100644
index 00000000..0955ed5b
--- /dev/null
+++ b/EnvelopeGenerator.ReceiverUI/Services/SignatureService.cs
@@ -0,0 +1,24 @@
+using System.Net.Http.Json;
+using System.Text.Json;
+using EnvelopeGenerator.ReceiverUI.Models;
+using EnvelopeGenerator.ReceiverUI.Options;
+using Microsoft.Extensions.Options;
+
+namespace EnvelopeGenerator.ReceiverUI.Services;
+
+public class SignatureService(HttpClient http, IOptions apiOptions)
+{
+ private static readonly JsonSerializerOptions _jsonOptions = new(JsonSerializerDefaults.Web);
+
+ public async Task> GetAsync(string envelopeKey, CancellationToken cancel = default)
+ {
+ var url = $"{apiOptions.Value.BaseUrl}/api/Signature/{Uri.EscapeDataString(envelopeKey)}";
+ var response = await http.GetAsync(url, cancel);
+
+ if (!response.IsSuccessStatusCode)
+ throw new HttpRequestException($"Failed to retrieve signatures for envelope {envelopeKey}: {response.StatusCode} {response.ReasonPhrase}");
+
+ var result = await response.Content.ReadFromJsonAsync>(_jsonOptions, cancel);
+ return result ?? [];
+ }
+}