# Certificate - put

## certificate/put

<mark style="color:orange;">`PUT`</mark> `https://public-api.timesafe.io/certificate/put`

Questo servizio permette di salvare un hash in blockchain.\
Se in modalità sandbox il certificato sarà confermato entro 60 secondi, ma i dati relativi al salvataggio in blockchain saranno dei fac-simile.\
Se in modalità live, può essere necessario un tempo fino a 7 minuti per avere conferma completa di salvataggio in blockchain per Ethereum, fino a 3 minuti per Algorand. Questi tempi si riferiscono a un normale stato operativo delle blockchain, in eccezionali casi di grande congestione delle blockchain relative,  possono subire variazioni.<br>

#### Headers

| Name  | Type   | Description                             |
| ----- | ------ | --------------------------------------- |
| token | string | Token JWT ottenuto da endpoint di login |

#### Request Body

| Name                | Type    | Description                                                                                                                                                                                            |
| ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| blockchain          | string  | Indica quale blockchain usare. Può valere "Algorand" o "Ethereum". Opzionale, di default vale "Ethereum".                                                                                              |
| hash\_file\_and\_cf | boolean | Indica se l'hash passato è da salvare in blockchain così come è (0) o se deve prima essere giustapposto all'hash del Codice Fiscale dell'utente (1). Opzionale, di default vale 1.                     |
| note                | string  | campo libero per le note (o dati custom che si vogliono persistere)                                                                                                                                    |
| fileSize            | integer | dimensione del file originale, in Byte.                                                                                                                                                                |
| fileName            | string  | Nome del file originale. Di fatto può essere un identificativo diverso dal nome del file, ma si suggerisce di usare il nome orginale e usare il campo *note* per altri scopi.                          |
| url                 | string  | se il file è presente in uno storage pubblico raggiungibile tramite URL si può inserire qui il suo indirizzo                                                                                           |
| parent              | integer | <p>se questo certificato è una nuova versione di uno già presente, specificare con questo parametro l'ID. <br>NOTA: il parent deve essere della stessa modalità (live/sandbox) dell'utenza in uso.</p> |
| hash                | string  | Hash del file ottenuto con algoritmo SHA1, **senza 0x iniziale**                                                                                                                                       |

{% tabs %}
{% tab title="200 Salvataggio avvenuto con successo" %}

```
{
    "status": "OK",
    "data": {
        "certificate_id": 93847,
        "certificate_hash": "cea79eade58eab4a11a65b2b79705fe0746e067a"
    }
}
```

{% endtab %}
{% endtabs %}

## certificate/put

<mark style="color:green;">`POST`</mark> `https://public-api.timesafe.io/certificate/put`

Questo servizio permette di salvare un hash in blockchain partendo da un file che viene a sua volta salvato in un apposito storage remoto e non pubblico.\
Se in modalità sandbox il certificato sarà confermato entro 60 secondi, ma i dati relativi al salvataggio in blockchain saranno dei fac-simile.\
Se in modalità live, può essere necessario un tempo fino a 7 minuti per avere conferma completa di salvataggio in blockchain.<br>

#### Headers

| Name  | Type   | Description                             |
| ----- | ------ | --------------------------------------- |
| token | string | Token JWT ottenuto da endpoint di login |

#### Request Body

| Name                | Type    | Description                                                                                                                                                                                            |
| ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| blockchain          | string  | Indica quale blockchain usare. Può valere "Algorand" o "Ethereum". Opzionale, di default vale "Ethereum".                                                                                              |
| hash\_file\_and\_cf | boolean | indica se l'hash passato è da salvare in blockchain cos' com'è (0) o se deve prima essere giustapposto all'hash del Codice Fiscale (1). Opzionale, di default vale 1.                                  |
| note                | string  | Campo libero per le note (o parametri custom che si vogliono persistere)                                                                                                                               |
| parent              | integer | <p>se questo certificato è una nuova versione di uno già presente, specificare con questo parametro l'ID .<br>NOTA: il parent deve essere della stessa modalità (live/sandbox) dell'utenza in uso.</p> |
| file                | object  | Il file da salvare.                                                                                                                                                                                    |

{% tabs %}
{% tab title="200 Salvataggio avvenuto con successo" %}

```
{
    "status": "OK",
    "data": {
        "certificate_id": 93847,
        "certificate_hash": "cea79eade58eab4a11a65b2b79705fe0746e067a"
    }
}
```

{% endtab %}
{% endtabs %}
