Blockchain Docs (1.0.0)

Download OpenAPI specification:Download

Versione: 1.0
Data: 05/10/2022

L'API ti consente di automatizzare le tue operazioni convalidando i documenti, verificando la loro esistenza nella blockchain di Ethereum e invalidandoli. Utilizzando l'API, non dovrai mai inviare i tuoi file, ma dovrai inviare un hash SHA-256 dei file. L'hash è l'unica informazione memorizzata sulla blockchain e consente ad altre persone di scoprire se il tuo file è effettivamente esistito in un periodo di tempo.

Struttura Web Service

Il web server è composto da una logica business per il controllo e la gestione delle chiamate, le quali vengono esposte da un layer API di tipo RESTFul. Inoltre, si interfaccia attraverso uno smart contract solidity alla blockchain Ethereum per il salvataggio e la verifica degli hash.

Le API sono protette da un sistema di token gestino e conservato all'interno di un DB.

Autenticazione

Per poter eseguire una chiamata API bisogna essere in possesso di un Token.

Il codice token deve essere richiesto anticipatamente in modo da registrare l'utente nel sistema ed accettare le richieste sistema.
Tutte le chiamate richiedono il token di autorizzazione.

Funzioni API

api.flaxiachain.it/validate

Permette di validare un hash di un file. Il metodo scrive nella blockchain l'hash e i relativi metadati che vengono inviati.

Requisiti
Richiede che hash non esiste nella catena.

Risposta

HTTP 200
Token non valido

{
    status: false,
    message: string messaggio di errore
}

HTTP 200
Problema di validazione sulla blockchain o requisiti non rispettati

{
    status: "Failed", 
    response: Oggetto contenente la risposta della blockchain,
    reason: "Validate error occured"
}

HTTP 200
Successo validazione avvenuta correttamente

{
    status: "Success",
    response: Oggetto contente la risposta della validazione
}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "hash": "0x0000080000000000000000000000000000000000000000000000000000000000",
  • "title": "Stringa del nome del file",
  • "md5": "MD5 del file"
  • "type": "Mimetype del file"
  • "token": "Stringa del token di autorizzazione"
}

api.flaxiachain.it/fvalidate

Identica al metodo "validate", con l'unica differenza che si attende come parametro di input direttamente un file. Sarà compito del sistema recuperare i metadati da inviare alla blockchain per sottoporre il file alla validazione.

Request Body schema: multipart/form-data
documento
string <binary>

File da validare

token
string

Stringa token di autorizzazione

Responses

api.flaxiachain.it/invalidate

Permette di invalidare un hash di un file sostituendo con uno nuovo. Il metodo si attende quindi il l'hash del file che vogliamo invalidare, chiamato oldHash, e l'hassh del nuovo file, chiamo newHash, il quale sostiuirà il precedente conservandone il link nella catena. Per funzionare correttamente il newHash deve essere già presente nella blockChain.

Requisiti
oldHash deve esistere nella blockchain
newHash deve esistere nella blockchain
oldHash non devere essere stato già invalidato

Ritorna

HTTP 200
Token non valido

{
    status: false,
    message: string messaggio di errore
}

HTTP 200
Problema di invalidazione sulla blockchain o requisiti non rispettati

{
    status: "Failed", 
    response: Oggetto contenente la risposta della blockchain,
    reason: "Validate error occured"
}

HTTP 200
Successo invalidazione avvenuta correttamente

{
    status: "Success",
    response: Oggetto contente la risposta della invalidazione
}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "oldHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  • "newHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  • "token": "Stringa token di autorizzazione"
}

api.flaxiachain.it/finvalidate

Identica al metodo "invalidate", con l'unica differenza che si attende come parametro di input direttamente i due file old e new. Sarà compito del sistema recuperare i dati dei file per invalidare il file posto come old.

Request Body schema: multipart/form-data
oldDocumento
string <binary>

File da invalidare

newDocumento
string <binary>

File che invalida oldDocumento

token
string

Stringa token di autorizzazione

Responses

api.flaxiachain.it/isvalid

Il metodo permettere di interrogare la blockchain su un hash per recuperare le informazioni sullo stato del file.

Requisiti
Hash deve esistere nella blockchain

Ritorna

HTTP 200
Token non valido

{
    status: false,
    message: string messaggio di errore
}

HTTP 200
Problema nella richiesta verso la blockchain o requisiti non rispettati

{
    status: "Failed", 
    response: Oggetto contenente la risposta della blockchain,
    reason: "IsValid error occured"
}

HTTP 200
Successo validazione avvenuta correttamente

{
    status: "Success",
    response: Oggetto contente la risposta della isValid
}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  • "token": "Stringa token di autorizzazione"
}

api.flaxiachain.it/fisvalid

Identica al metodo "isvalid", con l'unica differenza che si attende come parametro di input direttamente il file da verificare. Sarà compito del sistema recuperare l'hash del file da inviare in richiesta alla blockchain

Request Body schema: multipart/form-data
documento
string <binary>

File da controllare

token
string

Stringa token di autorizzazione

Responses

api.flaxiachain.it/upload

Questo metodo è una funzione di supporto, che può essere utile da richiamare per ottenere i metadati del file da usare nei metodi visti in precedenza.

Risposta

HTTP 500
Errore elaborazione file

HTTP 200
Token non valido

{
    status: false,
    message: string messaggio di errore
}

HTTP 200
Il form non contiene il file

{
    status: false,
    message: 'No file uploaded'
}

HTTP 200
Elaborazione file avvenuta con successo

{
    status: true,
    message: 'File is uploaded',
    data: {
            nome: nome,
            mimetype: mimetype,
            size: dimenzioni,
            hash: hash,
            md5: md5
    }
}
Request Body schema: multipart/form-data
documento
string <binary>

File da elaborare

token
string

Stringa token di autorizzazione

Responses