Betriebsanweisungen und Funktionszuordnung für die Umstellung auf das EU-SES-Protokoll bis zum 31. Dezember 2026.

Hier ist eine Schritt-für-Schritt-Anleitung zur Migration von der alten Digital Signature API zur neuen eSignature API. Bitte beachten Sie, dass die alte API veraltet ist und ihr Support am 31. Dezember 2026. endet.
Der erste Schritt der Migration besteht darin, die Domains Ihrer API-Aufrufe so zu aktualisieren, dass sie auf die neuen eSignature-Server verweisen:
https://ws.firmadigitale.com zu https://esignature.openapi.com.https://test.ws.firmadigitale.com zu https://test.esignature.openapi.com.Die alten /firma_elettronica-Endpoints wurden in der neuen eSignature API ersetzt und neu strukturiert. Dabei wird zwischen dem Endpoint zur Erstellung einer Signatur /EU-SES, dem Endpoint zum Abrufen der Signaturhistorie /signatures sowie dem Endpoint für Details eines einzelnen signierten Dokuments /signatures/{id}/{actionType} unterschieden.
Hier ist das exakte Mapping für die Migration:
POST /firma_elettronica/basePOST /EU-SESHinweis: Dieser neue Endpoint ermöglicht die Erstellung einer SES-Anfrage für einen oder mehrere Signierende. Das Payload basiert auf dem neuen EU-SES_POST-Schema.
GET /firma_elettronicaGET /signaturesHinweis: Die neue Version unterstützt erweiterte Filterfunktionen (nach Status, Signaturtyp und Zertifikatstyp).
GET /firma_elettronica/{id}GET /signatures/{id}/detailGET /firma_elettronica/{id}/downloadGET /signatures/{id}/signedDocumentGET /firma_elettronica/{id}/auditGET /signatures/{id}/auditDELETE /signatures/{id}Hinweis: Die neue eSignature API ermöglicht es, signierte Dokumente, deren Details und den Audit Trail jederzeit explizit aus dem System zu löschen.
In der alten API gab es dedizierte Endpoints zur Erstellung und Verwaltung benutzerdefinierter Oberflächen (/firma_elettronica_ui) für das Signatur-iframe. Diese Endpoints (POST, GET und DELETE /firma_elettronica_ui) wurden bereits als VERALTET markiert.
Die neue API hebt alle Einschränkungen der vorherigen Version auf und ermöglicht es, unbegrenzt viele Interfaces direkt im Rahmen der POST /EU-SES-Anfrage zu erstellen, indem alle Anpassungsinformationen in den Optionsfeldern übergeben werden.
Dies sind die optionalen Parameter zur Anpassung der Benutzeroberfläche oder des Signaturverhaltens:
Alle Farbparameter erfordern einen Hex-String (HEX) im Format: ^#[0-9a-fA-F]{6}$.
| Eigenschaft | Typ | Beispiel | Beschreibung |
|---|---|---|---|
| sidebarBackgroundColor | string | #55a4ed |
Hintergrundfarbe der Seitenleiste. |
| sidebarTitleColor | string | #000000 |
Titel-Farbe der Seitenleiste. |
| sidebarTextColor | string | #55a4ed |
Textfarbe der Seitenleiste. |
| sidebarLogo | string($uri) | https://... | Logo oben links (wird auch in OTP-E-Mails verwendet). |
| Eigenschaft | Typ | Beispiel | Beschreibung |
|---|---|---|---|
| headerBackgroundColor | string | #afcfed |
Hintergrundfarbe des Headers. |
| headerTitleColor | string | #000000 |
Titel-Farbe des Headers. |
| headerSubtitleColor | string | #55a4ed |
Untertitel-Farbe des Headers. |
| footerBackgroundColor | string | #afcfed |
Hintergrundfarbe des Footers. |
| Eigenschaft | Typ | Beispiel | Beschreibung |
|---|---|---|---|
| buttonTextColor | string | #000000 |
Textfarbe des Buttons. |
| buttonTextColorHover | string | #000000 |
Textfarbe beim Hover. |
| buttonBackgroundColor | string | #ffffff |
Hintergrundfarbe des Buttons. |
| buttonBackgroundColorHover | string | #0a5aa6 |
Hintergrundfarbe beim Hover. |
| Eigenschaft | Typ | Beispiel | Beschreibung |
|---|---|---|---|
| signButtonTextColor | string | #55a4ed |
Textfarbe des „Weiter/Signieren“-Buttons. |
| signButtonTextColorHover | string | #000000 |
Textfarbe beim Hover. |
| signButtonBackgroundColor | string | #0a5aa6 |
Hintergrundfarbe des „Weiter/Signieren“-Buttons. |
| signButtonBackgroundColorHover | string | #55a4ed |
Hintergrundfarbe beim Hover. |
Diese Parameter steuern die Anzeige von UI-Elementen. Der Standardwert ist für alle booleschen Felder false.
| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
| hideSidebar | boolean | false | Wenn true, wird die Seitenleiste ausgeblendet. |
| hideHeader | boolean | false | Wenn true, wird der Header ausgeblendet. |
| hideDownloadValidated | boolean | false | Blendet den Download-Button für das hochgeladene Dokument aus. |
| hideDownloadSigned | boolean | false | Blendet den Download-Button für das signierte Dokument aus. |
Parameter zur Steuerung der Einbettung der Anwendung und des Weiterleitungsflusses nach Abschluss.
| Eigenschaft | Typ | Beispiel / Hinweise | Beschreibung |
|---|---|---|---|
| iframeAncestors | array | ["https://site.com"] |
Liste der URLs, die die Anwendung in einem iframe einbetten dürfen. |
| completeUrl | string($uri) | https://... | URL, zu der der Benutzer nach Abschluss des Prozesses weitergeleitet wird. |
| cancelUrl | string($uri) | https://... | URL, zu der der Benutzer bei Abbruch weitergeleitet wird. |
Ein wichtiger Aspekt der neuen API, der bei der Migration berücksichtigt werden muss, ist die Aufbewahrungsrichtlinie. In der neuen eSignature API gilt:
Stellen Sie sicher, dass Ihre Backend-Prozesse aktualisiert werden, um die finale Datei über /signatures/{id}/signedDocument herunterzuladen und innerhalb des 90-Tage-Zeitraums in Ihren Systemen zu archivieren.
Das Payload zur Erstellung einer neuen Signaturanfrage (POST /EU-SES) hat im Vergleich zum alten Endpoint POST /firma_elettronica/base erhebliche Änderungen erfahren.
{
"members": [
{
"firstname": "Mario",
"lastname": "Rossi",
"email": "[email protected]",
"phone": "+393333333333",
"signs": [
{
"page": 1,
"position": "100,200,45,35"
}
]
}
],
"callback": {
"headers": {
"custom": "test"
},
"field": "data",
"url": "https://webhook.site/12345678"
},
"content": "JVBERi0xLjQNCiWio4+TD..."
}
{
"signers": [
{
"name": "Mario",
"surname": "Rossi",
"email": "[email protected]",
"mobile": "+393333333333",
"message": "Hallo Mario, {OTP} ist der Code zur Eingabe...",
"authentication": [
"sms"
],
"signatures": [{
"page": 1,
"x": "100",
"y": "200"
}]
}
],
"options": {
"signatureMode": [
"drawn"
],
"ui": {
"sidebarLogo": "https://www.your-company.com/logo.png",
"buttonBackgroundColor": "#0a5aa6"
}
},
"inputDocuments": {
"sourceType": "base64",
"payload": "JVBERi0xLjQK..."
},
"callback": {
"url": "https://webhook.site/12345678"
}
}
| Altes Feld | Neues Feld / Struktur | Migrationsdetails / Hinweise |
|---|---|---|
| members | signers | Umbenannt. |
| firstname | name | Umbenannt. |
| lastname | surname | Umbenannt. |
| phone | mobile | Umbenannt. |
| signs | signatures | Umbenannt. |
| position | x und y (getrennt) | Das alte Feld position (z. B. "100,200,45,35"), das Position und Größe definierte, wurde durch die Felder x und y für die reine Position ersetzt. |
| content | inputDocuments | Umbenannt. |
| (N/A) | message (in signers) | Neues Feld: ermöglicht die Anpassung der Nachricht (SMS/E-Mail), die den OTP-Code für den Signierenden enthält. |
| (N/A) | authentication (in signers) | Neues Feld: definiert die Authentifizierungsmethoden für den Signierenden (z. B. "sms", "email"). |
| (N/A) | options | Neuer Abschnitt: gruppiert globale Einstellungen und UI-Konfigurationen. |
| (N/A) | options.ui | Neuer Abschnitt: enthält alle UI-Anpassungsparameter (z. B. sidebarLogo, Farben usw.), wodurch separate UI-Endpunkte entfallen. |
| callback.field | Siehe unten | Siehe unten. |
| callback.headers | Callback-Objekt | Durch das Callback-Objekt ersetzt. |
Das callback-Objekt (gesendet in der POST /EU-SES-Anfrage) definiert die Webhook-Konfiguration, die von der eSignature-Plattform verwendet wird, um externe Systeme über Statusänderungen einer Signaturanfrage zu informieren.
Die unterstützten Felder sind unten beschrieben:
| Eigenschaft | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| url | string($uri) | Ja | HTTP(S)-Endpoint für Webhook-Benachrichtigungen. |
| method | string | Nein | JSON (Standard) oder FORM. |
| field | string | Nein | Definiert das Feld, in das der Callback-Payload eingefügt wird (nur relevant bei FORM). |
| retry | integer | Nein | Maximale Anzahl an Wiederholungsversuchen bei Fehlern. |
| headers | Objekt | Nein | Benutzerdefinierte HTTP-Header (z. B. für Authentifizierung). |
| custom | Objekt | Nein | Benutzerdefinierte Metadaten (z. B. interne IDs), die im Callback zurückgesendet werden. |
{
"callback": {
"url": "https://www.your-site.com/api/webhook/signature",
"method": "JSON",
"field": "data",
"retry": 3,
"headers": {
"Authorization": "Bearer your_security_token",
"X-Custom-Header": "custom_value"
},
"custom": {
"internal_case_id": "PRT-98765",
"department": "Human Resources"
}
}
}
Der Antwortkörper der Anfrage:
POST /EU-SES
wurde in der neuen eSignature API erweitert, um sofort nicht nur die eindeutige ID der erstellten Anfrage und die Weiterleitungs-URL zur Signatur-Oberfläche bereitzustellen, sondern auch den aktuellen Status der gesamten Anfrage, die Signierer-ID sowie die spezifische URL für den Zugriff des Signierenden.
Nachfolgend ein Beispiel des erweiterten Response-Bodys:
{
"data": {
"id": "69aaa647adb8b5c802035539",
"errorNumber": null,
"errorMessage": null,
"updatedAt": "2026-03-06 10:02:47.980+00:00",
"createdAt": "2026-03-06 10:02:47.979+00:00",
"certificateType": "EU-SES",
"state": "WAIT_VALIDATION",
"signatureType": "pades",
"signers": [
{
"authentication": [
"sms"
],
"name": "Mario",
"state": "NEW",
"surname": "Rossi",
"mobile": "+393333333333",
"mobileEditable": false,
"email": "[email protected]",
"emailEditable": false,
"id": "b99f85d9-8482-4970-b57d-ff6703a98818",
"url": "https://esign.openapi.com/b99f85d9-8482-4970-b57d-ff6703a98818",
"language": "browser",
"message": "Hallo Mario, {OTP} ist der Code zur Eingabe zur Bestätigung des Signaturprozesses",
"mobileValidation": {
"isPossible": true,
"isValid": true,
"regionCode": "IT",
"countryCode": "39",
"isValidNumberForRegion": true,
"numberType": "MOBILE",
"otpAttempts": 0
}
}
],
"options": {
"asyncDocumentsValidation": true,
"asyncSignature": false,
"signatureMode": [
"typed"
],
"withTimestamp": false,
"timezone": "UTC"
},
"document": {}
}
}
| Feld (data – Top-Level) | Typ | Beschreibung |
|---|---|---|
| id | string | Eindeutige ID der erstellten Signaturanfrage. Diese ID wird in allen weiteren Endpoints (/signatures/{id}/...) verwendet. |
| state | string | Aktueller Status der Signaturanfrage (z. B. WAIT_VALIDATION, WAIT_SIGN, WAIT_SIGNERS, WAIT_OTP, ERROR, CANCELLED, DONE). |
| certificateType | string | Art der elektronischen Signatur (EU-SES). |
| signers | array | Liste mit Details zu jedem Signierenden. |
| Feld signers | Typ | Beschreibung |
|---|---|---|
| id | string | Eindeutige ID des Signierenden. |
| url | string($uri) | URL zur Weiterleitung oder Einbettung (iframe), um den Signaturprozess für diesen Signierenden zu starten. |
| state | string | Status des Signierenden (NEW, DONE). |
| mobile | string | Telefonnummer für die Authentifizierung (falls konfiguriert). |
| string | E-Mail-Adresse des Signierenden. |
Das folgende Beispiel zeigt einen typischen Callback-Body, der von der eSignature API gesendet wird, wenn der Status einer Signaturanfrage einen finalen Zustand wie DONE erreicht.
| Feld | Beispielwert | Beschreibung |
|---|---|---|
| id | 69aaada4adb8b5c80203553d | Eindeutige ID der Signaturanfrage. |
| state | DONE | Finaler Status: Der Signaturprozess ist für alle Signierenden abgeschlossen. |
| certificateType | EU-SES | Typ der verwendeten elektronischen Signatur (Simple Electronic Signature EU-SES). |
| updatedAt | 2026-03-06 10:35:14.183+00:00 | Zeitpunkt der letzten Statusaktualisierung (Abschluss der Signatur). |
signers)| Feld | Beispielwert | Beschreibung |
|---|---|---|
| id (Signierender) | 69aaada4adb8b5c80203553d | Eindeutige ID der Signaturanfrage. |
| state | DONE | Status des Signierenden: Signatur abgeschlossen. |
| mobile | +393333333333 | Für SMS-Authentifizierung verwendete Nummer. |
| [email protected] | E-Mail-Adresse des Signierenden. | |
| signatures | [{"page":1,"x":10,"y":10, "formId":"Mario Rossi [0][0]"}] | Position der Signatur im Dokument (Seite 1, Koordinaten x:10, y:10). |
| mobileValidation | (Objekt) | Details der OTP-Validierung (inkl. otpAttempts: 1). |
| webValidation | (Objekt) | Tracking-Daten der Web-Interaktion des Nutzers während des Signaturprozesses. |
document)Im Status DONE werden sowohl das validierte Originaldokument als auch das signierte Dokument detailliert bereitgestellt:
| Unterfeld | Objekt (Beispiel) | Beschreibung |
|---|---|---|
| validatedDocument | (Objekt) | Details des vor der Signatur validierten Dokuments (z. B. Seitenanzahl, PDF-Metadaten, md5, sha256, Größe, mimetype). |
| signedDocument | (Objekt) | Referenz auf das finale signierte Dokument (id, md5, sha256, Größe, mimetype). |
Da der Status DONE ist und das Feld signedDocument vorhanden ist, sollte Ihr System im nächsten Schritt die ID (69aaada4adb8b5c80203553d) verwenden, um einen Aufruf GET /signatures/{id}/signedDocument durchzuführen und das signierte Dokument herunterzuladen. Beachten Sie, dass das Dokument nur 90 Tage im System verfügbar ist.