# 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.public-api.timesafe.io/api/certificate/certificate-put.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
