veil

Leggi la prova di una versione

Leggi la prova di inclusione di una versione sotto il checkpoint corrente.

GET/v1/identities/{n}/versions/{k}/proof
Accesso
Pubblico; chiave API facoltativa
Client
Fetch dal browser supportato

Parametri#

NomePosizioneSignificato
nObbligatorioPercorsoNumero permanente positivo della scheda.
kObbligatorioPercorsoNumero positivo di una versione pubblicata.

Esempi di richiesta#

cURL
curl -fsS 'https://veil.rip/v1/identities/1/versions/1/proof'
javascript
const response = await fetch("https://veil.rip/v1/identities/1/versions/1/proof");
const result = await response.json();

Prova la richiesta#

Risposta#

HTTP 200application/json

Lo stesso oggetto proof della scheda completa, per la versione k.

CampoTipoSignificato
versionintegerVersione coperta dalla prova.
recordstringTesto JSON canonico esatto che è stato firmato. Non riformattarlo prima della verifica.
saltstringSale dell’impegno in hex.
serverSaltstringContributo del server al sale, in hex.
clientSaltstring | nullContributo del dispositivo al sale, in hex, se usato.
commitmentstringSHA-256 dei byte del sale seguiti dai byte del record, in hex.
signedBystringChiave pubblica di firma.
signaturestringFirma sul prefisso identity-version e sul record esatto.
entrystringTesto canonico esatto della voce del registro.
logIndexintegerIndice della foglia a partire da zero.
leafHashstringSHA-256 di 0x00 seguito dai byte della voce, in hex.
checkpointCheckpointCheckpoint firmato con size, root e note.
inclusionarray<string>Hash del percorso di inclusione in hex, dal fratello più profondo.
witnessesarray<string>Righe delle controfirme dei testimoni, presenti anche in checkpoint.note.

Apri un oggetto annidato per leggerne i campi. I tipi con null ammettono un valore null; i campi optional possono essere assenti. Gli altri campi sono presenti nell’oggetto.

Checkpoint Checkpoint
CampoTipoSignificato
sizeintegerNumero di foglie nell’albero firmato.
rootstringHash della radice in base64.
notestringNota firmata completa, incluse le firme del registro e dei testimoni.

Intestazioni della risposta#

IntestazioneValoreSignificato
Content-Typeapplication/jsonUsa il tipo dichiarato per scegliere come leggere il corpo.
DateHTTP dateOra del server. Confrontala con il tuo orologio per firmare le richieste.
Retry-Afterinteger seconds, on rate_limited or busyAttendi almeno questo intervallo prima di riprovare. Altri codici 429/503 non lo includono necessariamente.

Cosa verificare#

Controlla apertura, hash della foglia, inclusione e checkpoint firmato.

Errori#

Gli errori API restituiscono un oggetto error. Usa error.code nella logica del programma; error.message è un testo inglese per le persone e può cambiare. Guida a risposte ed errori

HTTPCodiceSignificato e cosa fare
400invalid_parameter

Un campo del percorso, della query o del corpo manca, è malformato o fuori intervallo.

Correggi il campo indicato in error.message prima di inviare di nuovo.

404not_found

La scheda, la chiave, l’alias, il codice o la risorsa richiesti non sono stati trovati.

Controlla l’identificatore. Codici e anteprime temporanei potrebbero essere scaduti o già usati.

410erased

La scheda esisteva ed è stata cancellata o rimossa. La risposta contiene anche la ricevuta pubblica di cancellazione.

Smetti di usare questa scheda come autorità corrente. Conserva soltanto la ricevuta pubblica se serve.

503log_unavailable

Al momento il registro pubblico non può essere letto, verificato o usato per pubblicare.

Per le letture, considera il risultato non verificato e riprova più tardi. Prima di ripetere una scrittura, leggi la scheda per controllare se la pubblicazione è terminata.

Quando usi una chiave API facoltativa
HTTPCodiceSignificato e cosa fare
401invalid_api_key

La credenziale Bearer è malformata, sconosciuta, scaduta o revocata.

Usa una chiave attiva. Per l’accesso pubblico anonimo, rimuovi del tutto Authorization. Credenziali non valide non attivano automaticamente l’accesso anonimo.

403api_key_scope

La chiave API non ha il permesso read o verify, oppure l’endpoint non accetta chiavi Bearer.

Usa il permesso corretto. Le modifiche alle schede e la gestione delle chiavi richiedono una firma del dispositivo.

403api_key_suspended

Questa chiave API è sospesa.

Chiedi allo staff di ripristinarla; un’altra chiave non rimuove la sospensione dell’account.

403developer_suspended

L’account API del titolare è sospeso oppure la scheda titolare non è disponibile.

Controlla l’account titolare e le restrizioni dello staff. Creare un’altra chiave non aggira la sospensione.

Errori comuni delle richieste
HTTPCodiceSignificato e cosa fare
429rate_limited

È stato superato un limite anonimo, delle richieste firmate o della chiave API.

Attendi almeno i secondi indicati da Retry-After. Condividi coda e budget dei tentativi tra i tuoi processi.

500internal_error

Si è verificato un errore imprevisto del server. I dettagli interni non vengono restituiti.

Riprova le letture con attese crescenti e un limite. Controlla l’esito delle scritture prima di inviare una nuova operazione firmata.

503busy

L’applicazione ha raggiunto un limite temporaneo di concorrenza o del database.

Attendi i secondi indicati da Retry-After e riprova con attese crescenti e un limite.