HomeBlogGuida alla Migrazione Firma_Elettronica a EU-SES
Guide

Guida alla Migrazione Firma_Elettronica a EU-SES

Istruzioni operative e mappatura delle funzionalità per il passaggio al protocollo EU-SES entro il 31 dicembre 2026.

Ecco una guida passo-passo per migrare dalla vecchia API Firma Digitale alla nuova API eSignature. Tieni presente che la vecchia API è stata deprecata e il suo supporto terminerà il 31 dicembre 2026.

1. Modifica dei Domini Base (Base URL)

Il primo passo per la migrazione è aggiornare i domini delle tue chiamate API per puntare ai nuovi server di eSignature:

  • Produzione: passa da https://ws.firmadigitale.com a https://esignature.openapi.com.
  • Sandbox: passa da https://test.ws.firmadigitale.com a https://test.esignature.openapi.com.

2. Mappatura degli Endpoint

I vecchi endpoint /firma_elettronica sono stati sostituiti e riorganizzati all'interno della nuova API eSignature, introducendo la differenziazione tra l'endpoint di creazione della firma /EU-SES e quello per accedere all’elenco storico delle firme /signatures e i dettagli di un singolo documento firmato /signatures/{id}/{actionType}.

Ecco la mappatura esatta per la migrazione:

Creazione della richiesta di firma elettronica semplice (SES)

  • Vecchio Endpoint: POST /firma_elettronica/base
  • Nuovo Endpoint: POST /EU-SES

Note: Questo nuovo endpoint permette di creare una richiesta SES per uno o più firmatari. Il payload si baserà sul nuovo schema EU-SES_POST.

Recupero dell'elenco delle firme / richieste

  • Vecchio Endpoint: GET /firma_elettronica
  • Nuovo Endpoint: GET /signatures

Note: La nuova versione permette funzionalità di filtraggio avanzate (per stato, tipo di firma e tipo di certificato).

Ottenere le informazioni / dettagli su una richiesta specifica

  • Vecchio Endpoint: GET /firma_elettronica/{id}
  • Nuovo Endpoint: GET /signatures/{id}/detail

Scaricamento del documento firmato

  • Vecchio Endpoint: GET /firma_elettronica/{id}/download
  • Nuovo Endpoint: GET /signatures/{id}/signedDocument

Recupero dell'Audit Trail (traccia di controllo)

  • Vecchio Endpoint: GET /firma_elettronica/{id}/audit
  • Nuovo Endpoint: GET /signatures/{id}/audit

Cancellazione dei documenti (Nuova funzionalità)

  • Nuovo Endpoint: DELETE /signatures/{id}

Note: La nuova API eSignature ti consente di eliminare esplicitamente un documento firmato, i dettagli e l'audit trail dal sistema in qualsiasi momento.

3. Modifica modalità di personalizzazione UI

Nella vecchia API c'erano degli endpoint dedicati alla creazione e gestione di interfacce grafiche personalizzate (/firma_elettronica_ui) per l'iframe di firma. Questi endpoint (POST, GET e DELETE /firma_elettronica_ui) sono stati già contrassegnati come DEPRECATO.

Nella nuova API sono stati superati tutti i limiti della precedente e potranno essere create illimitate interfacce direttamente in fase di richiesta POST /EU-SES passando tutte le informazioni di personalizzazione nei campi previsti nelle opzioni.

Queste sono le opzioni opzionali per personalizzare l'interfaccia utente visibile all'utente finale o la modalità di firma:

1. Colori e Stile (Tematizzazione)

Tutti i parametri di colore richiedono una stringa in formato esadecimale (HEX) che segua il pattern: ^#[0-9a-fA-F]{6}$.

Area Barra Laterale (Sidebar)

Proprietà Tipo Esempio Descrizione
sidebarBackgroundColor string #55a4ed Colore dello sfondo della barra laterale.
sidebarTitleColor string #000000 Colore del titolo nella barra laterale.
sidebarTextColor string #55a4ed Colore del testo della barra laterale.
sidebarLogo string($uri) https://... Logo in alto a sinistra (usato anche nelle email OTP).

Area Intestazione e Piè di Pagina (Header & Footer)

Proprietà Tipo Esempio Descrizione
headerBackgroundColor string #afcfed Colore dello sfondo dell'intestazione.
headerTitleColor string #000000 Colore del titolo dell'intestazione.
headerSubtitleColor string #55a4ed Colore del sottotitolo dell'intestazione.
footerBackgroundColor string #afcfed Colore dello sfondo del piè di pagina.

Pulsanti Standard

Proprietà Tipo Esempio Descrizione
buttonTextColor string #000000 Colore del testo del pulsante.
buttonTextColorHover string #000000 Colore del testo al passaggio del mouse.
buttonBackgroundColor string #ffffff Colore dello sfondo del pulsante.
buttonBackgroundColorHover string #0a5aa6 Colore dello sfondo al passaggio del mouse.

Pulsanti di Firma / Procedura (Sign Button)

Proprietà Tipo Esempio Descrizione
signButtonTextColor string #55a4ed Colore testo del pulsante "Continua/Firma".
signButtonTextColorHover string #000000 Colore testo al passaggio del mouse.
signButtonBackgroundColor string #0a5aa6 Colore sfondo del pulsante "Continua/Firma".
signButtonBackgroundColorHover string #55a4ed Colore sfondo al passaggio del mouse.

2. Visibilità e Comportamento

Questi parametri controllano la visualizzazione degli elementi dell'interfaccia. Il valore predefinito è false per tutti i campi booleani.

Proprietà Tipo Default Descrizione
hideSidebar boolean false Se true, nasconde la barra laterale.
hideHeader boolean false Se true, nasconde l'intestazione.
hideDownloadValidated boolean false Se true, nasconde il tasto download del documento caricato.
hideDownloadSigned boolean false Se true, nasconde il tasto download del documento firmato.

3. Integrazione e Reindirizzamento

Parametri utilizzati per gestire l'incorporamento dell'applicazione e il flusso di navigazione post-operazione.

Proprietà Tipo Esempio / Note Descrizione
iframeAncestors array ["https://site.com"] Elenco di URL autorizzati a incorporare l'app in un iframe.
completeUrl string($uri) https://... URL a cui reindirizzare l'utente a procedura completata.
cancelUrl string($uri) https://... URL a cui reindirizzare l'utente in caso di annullamento.

4. Conservazione dei documenti nella nuova API

Un aspetto importante della nuova API di cui tenere conto durante la migrazione è la policy di retention. Nella nuova API eSignature:

  • I documenti firmati, validati e caricati rimarranno disponibili per il download nel sistema per un massimo di 90 giorni, dopodiché verranno automaticamente cancellati.
  • I dati strutturati della firma e l'audit trail saranno conservati per un massimo di 10 anni.

Assicurati che i tuoi processi di backend siano aggiornati per scaricare il file finale da /signatures/{id}/signedDocument e archiviarlo sui tuoi sistemi entro la finestra temporale di 90 giorni.

5. Differenze body della chiamata (POST)

Il payload della richiesta di creazione di una nuova firma (POST /EU-SES) ha subito modifiche significative rispetto al vecchio endpoint POST /firma_elettronica/base.

Vecchio Body della Chiamata (Esempio)

{
  "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..."
}

Nuovo Body della Chiamata (Esempio)

{
  "signers": [
    {
      "name": "Mario",
      "surname": "Rossi",
      "email": "[email protected]",
      "mobile": "+393333333333",
      "message": "Ciao Mario, {OTP} è il codice da inserire...",
      "authentication": [
        "sms"
      ],
      "signatures": [{
        "page": 1,
        "x": "100",
        "y": "200"
      }]
    }
  ],
  "options": {
    "signatureMode": [
      "drawn"
    ],
    "ui": {
      "sidebarLogo": "https://www.tua-azienda.com/logo.png",
      "buttonBackgroundColor": "#0a5aa6"
    }
  },
  "inputDocuments": {
    "sourceType": "base64",
    "payload": "JVBERi0xLjQK..."
  },
  "callback": {
    "url": "https://webhook.site/12345678"
  }
}

Mappatura e Punti Chiave di Migrazione del Payload

Vecchio Campo Nuovo Campo/Struttura Dettagli di Migrazione / Note
members signers Rinominato.
firstname name Rinominato.
lastname surname Rinominato.
phone mobile Rinominato.
signs signatures Rinominato.
position x e y (separati) Il vecchio campo position (es. "100,200,45,35") che definiva posizione e dimensione è stato sostituito dai campi x e y per la sola posizione.
content inputDocuments Rinominato.
(N/A) message (in signers) Nuovo campo: permette di personalizzare il testo del messaggio (SMS/Email) contenente l'OTP per il firmatario
(N/A) authentication (in signers) Nuovo campo: definisce il metodo di autenticazione richiesti per il firmatario (es. "sms", "email").
(N/A) options Nuova sezione: raggruppa le impostazioni globali e di UI.
(N/A) options.ui Nuova sezione: raggruppa tutti i parametri di personalizzazione dell'interfaccia utente (come sidebarLogo, colori, ecc.), eliminando la necessità di endpoint separati per la UI.
callback.field Vedi sotto Vedi sotto.
callback.headers Oggetto callback Sostituito con l’oggetto di callback.

Dettagli del Nuovo Oggetto di Callback

L'oggetto callback (inviato nella richiesta POST /EU-SES) definisce la configurazione del webhook che la piattaforma eSignature utilizzerà per notificare l'applicazione esterna sui cambi di stato della richiesta di firma.

Di seguito sono descritti i campi supportati nella configurazione del callback:

Proprietà Tipo Obbligatorio Descrizione
url string($uri) L'endpoint HTTP(S) a cui inviare le notifiche webhook.
method string No JSON (predefinito) o FORM.
field string No Specifica il nome del campo in cui iniettare il payload di callback. Questo campo è rilevante solo se method è impostato su FORM.
retry integer No Numero massimo di tentativi in caso di errore.
headers Oggetto No Coppie chiave-valore di header HTTP personalizzati da includere nella chiamata al webhook (es. per autenticazione/sicurezza)
custom Oggetto No Un oggetto contenente metadati personalizzati dall'utente (es. ID di pratiche interne). Questi dati verranno rispediti all'interno del body di callback per facilitare la correlazione nel sistema esterno

Esempio di Configurazione Completa:

{
    "callback": {
        "url": "https://www.tuosito.com/api/webhook/firma",
        "method": "JSON",
        "field": "data",
        "retry": 3,
        "headers": {
            "Authorization": "Bearer tuo_token_di_sicurezza",
            "X-Custom-Header": "valore_personalizzato"
        },
        "custom": {
            "id_pratica_interna": "PRT-98765",
            "dipartimento": "Risorse Umane"
        }
    }
}

6. Body di risposta della nuova firma

Il body di risposta della chiamata:

POST /EU-SES

è stato arricchito nella nuova API eSignature per fornire immediatamente non solo l'ID univoco della richiesta creata e l'URL di reindirizzamento per l'interfaccia di firma, ma anche lo stato aggiornato dell'intera richiesta, l'ID dell'utente firmatario, e l'URL specifico per l'accesso del firmatario.
Di seguito un esempio del body di risposta esteso previsto:

{
    "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": "Ciao Mario, {OTP} è il codice da inserire per confermare la procedura di firma",
                "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": {}
}}
Campo data (Top-Level) TIpo Descrizione
id string L'ID univoco della richiesta di firma creata. Questo ID sarà utilizzato in tutti gli endpoint successivi (/signatures/{id}/...).
state string Lo stato attuale della richiesta di firma (es. WAIT_VALIDATION, WAIT_SIGN, WAIT_SIGNERS, WAIT_OTP, ERROR, CANCELLED, DONE ).
certificateType string Il tipo di firma elettronica richiesta (EU-SES).
signers array Un array contenente i dettagli di ciascun firmatario.
Campo signers Tipo Descrizione
id string L'ID univoco assegnato al firmatario
url string($uri) L'URL a cui reindirizzare l'utente o da incorporare in un iframe per avviare il processo di firma per questo specifico firmatario
state string Lo stato del firmatario (NEW, DONE).
mobile string Il numero di cellulare utilizzato per l'autenticazione (se configurato)..
email string L'indirizzo email del firmatario.

Dettagli del Body di Callback di Risposta (Esempio Stato DONE)

L'esempio fornito è un tipico body di callback inviato dalla nuova API eSignature quando lo stato di una richiesta di firma passa a un punto significativo, in questo caso, DONE.

Analisi dei Dettagli Chiave

updatedAt2026-03-06 10:35:14.183+00:00Data e ora dell'ultimo aggiornamento dello stato (il completamento).
Campo Valore (Esempio) Descrizione
id 69aaada4adb8b5c80203553d ID univoco della richiesta di firma.
state DONE Stato finale: la procedura di firma per tutti i firmatari è stata completata.
certificateType EU-SES Tipo di firma elettronica utilizzata (Firma Elettronica Semplice EU-SES)..
updatedAt 2026-03-06 10:35:14.183+00:00 Data e ora dell'ultimo aggiornamento dello stato (il completamento).

Dettagli del Firmatario (signers Array)

Campo Valore (Esempio) Descrizione
id (firmatario) 69aaada4adb8b5c80203553d ID univoco della richiesta di firma.
state (firmatario) DONE Stato del firmatario: ha completato la sua azione di firma.
mobile +393333333333 Numero utilizzato per l'autenticazione via SMS
email [email protected] Indirizzo email del firmatario.
signatures [{"page":1,"x":10,"y":10, "formId":"Mario Rossi [0][0]"}] Indica la posizione della firma sul documento (Pagina 1, coordinate x:10, y:10).
mobileValidation (Oggetto) Contiene i dettagli della convalida OTP (incluso otpAttempts: 1).
webValidation (Oggetto) Contiene i dettagli di tracciamento dell'interazione web dell'utente durante il processo di firma.

Documenti (Sezione document)

In uno stato DONE, vengono fornite informazioni dettagliate sia sul documento originale validato che sul documento firmato:

Sotto-campo Oggetto (Esempio) Descrizione
validatedDocument (Oggetto) Dettagli sul documento originale convertito e validato prima della firma (es. conteggio pagine, metadati PDF). Contiene id, md5, sha256, size e mimetype.
signedDocument (Oggetto) Riferimento al file finale firmato. Contiene l'id (69aaadcf31095e0a57033332), md5, sha256, size e mimetype.

Azione Raccomandata:

Dato che lo stato è DONE e il campo signedDocument è presente, il passo successivo nel tuo sistema dovrebbe essere quello di utilizzare l'ID principale (69aaada4adb8b5c80203553d) per effettuare una chiamata GET /signatures/{id}/signedDocument e scaricare il file firmato. Ricorda che il documento è conservato solo per 90 giorni.

Guida alla Migrazione Firma_Elettronica a EU-SES
Condividi su