Digital Signature

Digital, Electronic, Massive Signatures and Digital Identities all available in one API

All signature, electronic, advanced, qualified and digital identity solutions in real time

All the knowledge you need

Here you can find some advice to consider to approach this API. If you prefer, we provide code samples, OAS3 documentation, the ability to try the API live via the Swagger UI or import the entire collection into Postman. We also offer a Sandbox environment where you can experiment with all kinds of requests completely free of charge.

Useful tips to start with Digital Signature

Get the token in the appropriate section before you start.

Use the the online tool or generate it via API. Set the expire date, a usefull name and now add a bunch of scopes to limit the possible actions your token can do.

Firma Digitale (1.0.0)

Servizio web che consente di acquistare o rinnovare le firme digitali Infocert o Aruba e di ottenere identità digitali.

Prodotti

Metodo che consente di visualizzare tutti i prodotti disponibili e i relativi prezzi

List of products

This method shows you the list of all our products

Authorizations:
bearerAuth

Responses

Response Schema: application/json
Array of objects (Prodotto)
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://ws.firmadigitale.com/prodotti");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "message": "",
  • "error": null
}

Firme

Metodi che consentono di acquistare e rinnovare varie firme digitali

Purchase and renew digital signatures

This method allows you to purchase all the products on this web service such as smartcard readers or digital signatures

Authorizations:
bearerAuth
path Parameters
codice_prodotto
required
string
Example: FIR

Type of codice_prodotto you want to buy

Request Body schema: application/json

Schemi di riferimento per categoria:

  • PostBodySpid: SPID or SPID_V
  • PostBodyFirmaEstero: FIREST
  • PostBodyLettore: FIR_V or LETTORE or KEY_V or FIRREM_V or KEYCNS_V or SMARTCARDCNS_V
  • PostBodyRinnovi: RINFIR or RINCNS or RINFIRREM
  • PostBodyFirme: FIR or KIT or KEY or FIRREM or KEYCNS or KITCNS or SMARTCARDCNS
  • PostBodyFirmeVideoriconoscimento: SMARTCARDCNS_VIDEO or KEYCNS_VIDEO or FIRREM_VIDEO
  • PostBodyVideoriconoscimento: VIDEORIC
  • PostBodyFirmeAruba: SCARUBACNS or ARUBAKEYCNS or OTPDIS or OTPMOB
One of
assistenza
boolean

assistenza al prodotto

object (Callback)

Responses

Response Schema: application/json
ResponseRinnovo (object) or ResponseFirmaEstero (object) or ResponseFirma (object) or ResponseLettore (object) or ResponseSpid (object) or ResponseFirmeVideoriconoscimento (object) or ResponseFirmeAruba (object)
success
boolean
message
string
error
integer

Request samples

Content type
application/json
Example
{
  • "assistenza": true,
  • "urgenza": true,
  • "spedizione": "veloce",
  • "anagrafica_spedizione": {
    },
  • "callback": {}
}

Response samples

Content type
application/json
Example
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Richieste

Metodi per visualizzare tutte le richieste

List of your requests

This method shows you the list of all your requests

Authorizations:
bearerAuth
query Parameters
codice_prodotto
string
Example: codice_prodotto=FIR

Type of codice_prodotto

Responses

Response Schema: application/json
Array of objects (Richieste)
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://ws.firmadigitale.com/richiesta?codice_prodotto=FIR");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "message": "",
  • "error": null
}

Specific request

This method shows you the specific request related to the id

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 5f7b2e323a716857774a4373

request id

Responses

Response Schema: application/json
ResponseRinnovo (object) or ResponseFirmaEstero (object) or ResponseFirma (object) or ResponseLettore (object) or ResponseSpid (object) or ResponseFirmeVideoriconoscimento (object) or ResponseFirmeAruba (object)
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://ws.firmadigitale.com/richiesta/%7Bid%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
Example

The same exemple for /FIR_V /LETTORE /KEY_V /FIRREM_V /KEYCNS_V /SMARTCARDCNS_V

{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Update request

This method allows you to upload the form and identification document

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 5f7b2e323a716857774a4373

request id

Request Body schema: application/json
documento
string

File documento ID codificato in base 64

nome_documento
string

nome del file

modulo
string

file del modulo di riconoscimento codificato in base 64

nome_modulo
string

nome del file

Responses

Response Schema: application/json
ResponseFirma (object) or ResponseFirmeAruba (object)
success
boolean
message
string
error
integer

Request samples

Content type
application/json
{
  • "modulo": "MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwGggCSABIID6CVQREYtMS40CiXi48/TCjEgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyNTgyL04gMz4+c3RyZWFtCnictVZnVFPZFj733vRCCyCd0GuQTgDpvUmRLiohCRBKgJAAKnZEBUYQEWkWkEERBxyVImNBLFgYFBRRQSfIoKCOgwUbKu8Gf+is9db7Ne9b69773W/tvc8++/w4HwDkqTR2ejYMAEjnCwVhPu706JhYOv4+QIAqUAC6QJPFzs50Cw",
  • "nome_modulo": "modulo.pdf",
  • "documento": "YCQEUVEC2EgTMQDCUZikUREgKxHipBKpAFpRbqRPuQ2IkZeIB8xOAwNQ8cwMI4YX0wEho3JwqzHlGBqMEcwHZhLmNuYccwM5iuWilXDmmAdsH7YaGwSNhdbiK3ENmHbsZexw9hJ7DscDqeIM8DZ4XxxMbgU3FpcCW4frg3XgxvETeBm8Xi8Mt4E74QPxrPwQnwhvhp/DH8eP4SfxH8gkAmaBEuCNyGWwCdsJlQSjhLOEYYITwlzRBmiHtGBGEzkEFcTS4mNxG7iTeIkcY4kSzIgOZHCSSmkTaQqUivpMmmM9IZMJmuT7cmhZB55I7mKfJx8lTxO/kiRoxhTPChxFBFlJ+UwpYdyn/KGSqXqU12psVQhdSe1",
  • "nome_documento": "documento.pdf"
}

Response samples

Content type
application/json
Example

The same exemple for /KEY /FIR /KIT /FIRREM /KEYCNS /KITCNS /SMARTCARDCNS

{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Download the recognition form

This method allows you to directly download the recognition form in pdf format which must then be completed and sent by raccomandata to the fornitore; it is essential to complete the evasion of a procedure for purchasing a digital signature; it is not needed for the renewal of a signature

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 5f7b2e323a716857774a4373

request id

Responses

Response Schema: application/pdf
string <binary>

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://ws.firmadigitale.com/richiesta/%7Bid%7D/modulo");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Firma elettronica

Metodi che consentono di firmare digitalmente documenti PDF con API REST.

Request an e-signature

This service allows you to digitally sign a PDF file from multiple users with proof-of-consent.
We will provide a link, that you can easily integrate into an iframe, which will guide your users during the signing process; they will be sent a SMS on the provided phone number with an OTP to verify their identity.
The signed document is recognized by European regulations.

In order find the coordinates for your templates, please check our online tool at: https://developers.openapi.it/playground/firmadigitale/
Your request will return a status parameter, which will change every time that there is a update.
When finished is returned, your request is completed and all the members have signed the document; when refused is returned, it means that one of your signers has rejected the document intentionally.
If you register a Callback, a POST request will be submitted to your server every time the status of the request changes or one of your members has signed/refused the document. You can always check the status with a GET request

Authorizations:
bearerAuth
Request Body schema: application/json
title
string or null

È possibile fornire un titolo e una descrizione alla richiesta. Verranno mostrati nell'iframe agli utenti durante il processo di firma.

description
string or null
ui
string

Una configurazione dell'interfaccia utente creata con /firma_elettronica_ui.

filename
string
Default: "fes_{timestamp}.pdf"
content
string

codifica base64 del file PDF

Array of objects
object (FesCallback)

Responses

Response Schema: application/json
object (FesBaseResponse)
success
boolean
message
string
error
string

Callbacks

Request samples

Content type
application/json
{
  • "title": "string",
  • "description": "string",
  • "ui": "string",
  • "filename": "fes_{timestamp}.pdf",
  • "content": "string",
  • "members": [
    ],
  • "callback": {}
}

Response samples

Content type
application/json
{
  • "filename": "example.pdf",
  • "members": [
    ],
  • "content": "JVBERi0xLjUKJb/3ov4KNiAwIG9iago8PCAvTGluZWFyaXplZCAxIC9MIDUwMTY4IC9IIFsgNzA4IDE0NCBdIC9PIDEwIC9FIDQ0NTc4IC9OIDIgL1QgNDk4NzIgPj4KZW5kb2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA..."
}

Callback payload samples

Callback
POST: your_url
Content type
application/json
{
  • "data": {
    }
}

List all your past and pending requests

Authorizations:
bearerAuth

Responses

Response Schema: application/json
Array of objects (FesBaseResponse)
success
boolean
message
string
error
string

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://ws.firmadigitale.com/firma_elettronica");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "message": "string",
  • "error": "string"
}

Get information on a sign request

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 923j90n02n1w51504b6ea145

Responses

Response Schema: application/pdf
object (FesBaseResponse)
success
boolean
message
string
error
string

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://ws.firmadigitale.com/firma_elettronica/%7Bid%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Download your signed document

Once the signing process is compleated you can use this endpoint to get a the base64-encoded output of you pdf file.

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 923j90n02n1w51504b6ea145

Responses

Response Schema: application/json
content
string

A base64 encoding of your SIGNED pdf file.

success
boolean
message
string
error
string

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://ws.firmadigitale.com/firma_elettronica/%7Bid%7D/download");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "content": "aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1kUXc0dzlXZ1hjUQ==",
  • "success": true,
  • "message": "string",
  • "error": "string"
}

Create a custom UI for e-signatures

Authorizations:
bearerAuth
Request Body schema: application/json
name
string
description
string
defaultZoom
integer
logo
string

Un'immagine codificata in base 64, preceduta dallo schema URI dei dati.

languages
Array of strings
defaultLanguage
string
signImageTypesAvailable
Array of strings
enableHeaderBar
boolean
enableHeaderBarSignAs
boolean
enableSidebar
boolean
enableMemberList
boolean
enableDocumentList
boolean
enableDocumentDownload
boolean
enableActivities
boolean
authenticationPopup
boolean
enableRefuseComment
boolean
Array of objects

Personalizzare il contenuto di alcuni elementi dell'iFrame sovrascrivendo il contenuto di alcune etichette. Ogni lingua disponibile deve avere la propria stringa tradotta, altrimenti verrà mostrata l'etichetta predefinita.

fonts
Array of strings
style
string

Sono disponibili le seguenti classi:

  • sign-ui-title
  • sign-ui-title-label
  • sign-ui-title-underline
  • sign-ui-avatar
  • sign-ui-avatar--primario
  • sign-ui-avatar--successosign-ui-avatar--errore
  • sign-ui-alert
  • sign-ui-alert--primario
  • sign-ui-alert--secondario
  • sign-ui-alert--warning
  • sign-ui-alert--success
  • sign-ui-alert--error
  • sign-ui-procedure-detail-info
  • sign-ui-activity-titlesign-ui-confirm-box-valid
  • sign-ui-button-sign-confirm
  • sign-ui-procedura-nomesign-ui-documenti-elenco
  • sign-ui-firmatari-elenco
  • sign-ui-button-next-document
  • sign-ui-button-rifiutare
  • sign-ui-button-validate
  • sign-ui-button-sign
  • sign-ui-button-validate-cancel
  • sign-ui-button-validate-conferma
  • sign-ui-button-refuse-cancel
  • sign-ui-button-refuse-confirm
  • sign-ui-stamp
  • sign-ui-actions-banner
  • sign-ui-waiting
  • sign-ui-waiting-circle-bg
  • sign-ui-circolo di attesa-attivo
  • sign-ui-circolo di attesa-testo

object
object
object

È possibile personalizzare l'esperienza dopo la firma, l'annullamento o un errore durante il processo. Usare redirectSuccess per reindirizzare un utente a un url quando è stato firmato. Specificare il campo url e il modo in cui aprirlo nel campo target, come un link HTML. Il booleano auto può essere utile se non si vuole reindirizzare subito dopo la firma. Se si vuole visualizzare un pulsante nell'iframe con il seguente testo: "Hai firmato con successo, clicca qui per continuare", passarlo a false. Per impostazione predefinita, con true, il reindirizzamento verrà automaticamente attivato anche quando l'evento viene attivato. È possibile personalizzare altri due reindirizzamenti: redirectCancel quando il membro rifiuta la procedura e redirectError se si verifica un errore durante il processo di firma.

Responses

Response Schema: application/json
object (FesUiResponse)
success
boolean
message
string
error
string

Request samples

Content type
application/json
{
  • "name": "My first template for Signature-UI",
  • "description": "Here is the Signature-UI template for Yousign Developers.",
  • "defaultZoom": 100,
  • "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQU [...] IwU3i6foIAAAAAElFTkSuQmCC",
  • "languages": [
    ],
  • "defaultLanguage": "en",
  • "signImageTypesAvailable": [
    ],
  • "enableHeaderBar": true,
  • "enableHeaderBarSignAs": true,
  • "enableSidebar": true,
  • "enableMemberList": true,
  • "enableDocumentList": true,
  • "enableDocumentDownload": true,
  • "enableActivities": true,
  • "authenticationPopup": true,
  • "enableRefuseComment": true,
  • "labels": [
    ],
  • "fonts": [
    ],
  • "style": "Just a CSS string for customize all of our iFrame.",
  • "redirectCancel": {},
  • "redirectError": {},
  • "redirectSuccess": {}
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

List all your custom UIs

Authorizations:
bearerAuth

Responses

Response Schema: application/json
Array of objects (FesUiResponse)
success
boolean
message
string
error
string

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://ws.firmadigitale.com/firma_elettronica_ui");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "message": "",
  • "error": null
}

Get custom UI for e-signatures

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 923j90n02n1w51504b6ea145

The id of a UI template

Responses

Response Schema: application/json
object (FesCreateUi)

È possibile specificare le seguenti opzioni:

  • abilitaHeaderBar può visualizzare o meno la barra di intestazione dell'iFrame. Il valore predefinito è true.
  • enableHeaderBarSignAs può visualizzare o meno la barra appena sotto la barra di intestazione per menzionare il nome del firmatario. Il valore predefinito è true.
  • enableSidebar può visualizzare o meno la barra laterale, dove è possibile trovare i documenti e i firmatari a sinistra del visualizzatore di documenti. Il valore predefinito è true.
  • enableMemberList si trova nella barra laterale. È possibile visualizzare o meno l'elenco dei membri (firmatari o validatori della procedura). Il valore predefinito è true.
  • enableDocumentList si trova nella barra laterale. È possibile visualizzare o meno l'elenco dei documenti. Il valore predefinito è true.
  • abilitaDocumentDownload si trova nell'elenco dei documenti. È possibile autorizzare o meno il download dei documenti da parte degli utenti. Il valore predefinito è true.
  • abilitaAttività si trova nella barra laterale. È possibile accedere al feed delle attività che mostra chi firma, convalida o commenta la procedura. Il valore predefinito è true.
  • authenticationPopup Per la firma, l'utente sarà reindirizzato a una vista che richiederà una sicurezza b. È possibile modificarla solo tramite un popup sul visualizzatore del documento impostando questo campo su true. Il valore predefinito è false.
  • enableRefuseComment può visualizzare o meno il popup che contiene il commento chiesto quando il partecipante rifiuta la procedura. Il valore predefinito è true.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://ws.firmadigitale.com/firma_elettronica_ui/%7Bid%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

SPID

Metodi che consentono di ottenere 4 tipi di spid (al momento è disponibile solo lo spid personale)

Personal spid

This method allows you to obtain a url for registering a personal spid with a duration of 1 year

Authorizations:
bearerAuth

Responses

Response Schema: application/json
object
success
boolean
message
string
error
integer

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://ws.firmadigitale.com/spid_personale");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{}