veil

Leggi la scheda di una persona

Leggi la scheda pubblica completa, il record firmato, la prova e la storia recente.

GET/u/{card}.json
Accesso
Pubblico; chiave API facoltativa
Client
Fetch dal browser supportato

Altri indirizzi#

  • /u/{card}
  • /v1/identities/{n}

Parametri#

NomePosizioneSignificato
cardObbligatorioPercorsoIl numero permanente o l’alias corrente della scheda.

Esempi di richiesta#

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

Prova la richiesta#

Risposta#

HTTP 200application/json

La scheda contiene n, id, url, type, keys, links e proof. historyBefore indica la storia più vecchia. Una scheda cancellata restituisce una testimonianza pubblica con HTTP 410.

CampoTipoSignificato
nintegerNumero permanente della scheda.
urlstringURL permanente con il numero della scheda.
namestringNome visualizzato corrente; un nome nascosto diventa Card seguito dal numero.
initialsstringIniziali da mostrare in assenza di un’immagine.
sincestringData della prima versione in YYYY-MM-DD UTC.
idstringImpegno della prima versione in hex, da cui deriva l’impronta.
idSaltobject | nullMetà server e client del sale in hex. client può essere null.
tokenstringPseudonimo stabile nel registro pubblico in base64url.
versionintegerVersione pubblicata corrente.
keysarray<CardKey>Tutte le chiavi dei dispositivi e di recupero, incluse quelle revocate.
linksarray<CardLink>Account collegati e subentri in attesa.
orgsarray<CardOrg>Affiliazioni accettate alle organizzazioni di una persona.
eventsarray<CardEvent>Pagina più recente della storia, ordinata al suo interno dalla più vecchia.
witnessesobject | nullConteggi signed, of e needed per la versione corrente. Sono controlli del server.
nodesinteger | nullNumero di hash nel percorso di inclusione corrente.
fingerprintFingerprintDodici parole per lingua e dodici gruppi di cinque cifre.
proofCardProof | nullApertura e prova di inclusione correnti. Null indica che non è stato possibile verificare il registro; non considerarla verificata.
erasureobject | nullrequestedAt ed executesAt di una cancellazione in attesa.
typestringperson o organization.
membersarray<CardMember>, optionalPresente per un’organizzazione, inclusi gli inviti in attesa.
moderationobject | nullStato e azioni pubbliche di moderazione.
eventsTotalintegerTotale degli eventi della storia in tutte le pagine.
historyBeforeinteger | nullPassalo come before all’endpoint della storia per leggere la pagina precedente.
badgesarray<object>Badge attivi firmati o derivati.
nameHiddenobject | nullMotivo pubblico, since e logIndex del nome nascosto.
logoobject, optionalTipo e URL dell’immagine; omesso in assenza di un’immagine visibile.
logoHiddenobject, optionalMotivo pubblico del logo nascosto.
aliasstring | nullAlias corrente, che può cambiare.
aliasUrlstring | nullIndirizzo dell’alias corrente. Usa n come identificatore permanente.
formatinteger | optional2 su un registro in formato 2; assente nel formato 1.
currentV2Version | optionalFormato 2: la versione corrente con label, body, signature, signedBy, logIndex, publishedAt ed entry.
authorityarray<V2Version> | optionalFormato 2: le versioni di autorità dalla 1, al più 50, ognuna con la sua voce del registro, i e la prova di inclusione sul checkpoint di index.
authorityNextinteger | null | optionalFormato 2: da dove continua GET /v1/identities/{n}/authority?after=, o null.
stateobject | optionalFormato 2: head, keys, links, orgs, la prima pagina di members, external (le chiavi pubbliche di altri sistemi, [] senza) e le radici degli insiemi; roots.external c’è solo quando la scheda ha chiavi pubbliche di altri sistemi.
externalarray<CardExternal> | optionalFormato 2: le chiavi pubbliche di altri sistemi come la pagina le mostra, con il controllo del server in proofOk. Il tuo client rifà il controllo di ogni prova da state.external e non si affida a proofOk.
indexV2IndexBundle | null | optionalFormato 2: il pacchetto d’indice della scheda sul checkpoint della prova, come il registro lo serve a /index/<token>, con in più statements e statementsNext. Null quando il registro non l’ha dato.
standinginteger | null | optionalFormato 2: la posizione nel registro dell’ultima dichiarazione dello staff sulla scheda come la sa il server, o null. Il browser di un membro dello staff la mette in prev di una dichiarazione nuova. Il valore verificato è index.value.standing.
alertsarray<object> | optionalFormato 2, una persona: gli avvisi in vigore sui suoi account collegati, uno per account (platform, subject, display, state, since, to, logIndex, publishedAt). La parola del server: controllali con GET /v1/identities/{n}/alerts.
statementsobject | optionalFormato 2: le dichiarazioni firmate della scheda in breve: total, latest (le tre più recenti: id, title, publishedAt, retracts, retracted, url), url e feed.
HTTP 304none

Non modificato. La scheda ricostruita ha gli stessi byte dell’ETag che hai mandato. Riusa la scheda salvata con quell’ETag e verificala come sempre. Non c’è corpo nella risposta, e una scheda cancellata risponde comunque 410.

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.

Chiave del dispositivo CardKey
CampoTipoSignificato
idstringEtichetta del dispositivo mostrata sulla scheda.
algstringNome leggibile dell’algoritmo.
fpstringChiave pubblica completa presente nel record firmato.
ed25519stringChiave Ed25519 o metà della chiave composita, in hex.
sincestringData di aggiunta della chiave.
statestringactive, offline o revoked. Offline indica una chiave di recupero.
revokedstring | nullData di revoca, se revocata.
rolestringRuolo di firma assegnato alla chiave.
addedInintegerVersione che ha aggiunto la chiave.
revokedIninteger | nullVersione che ha revocato la chiave.
Account collegato CardLink
CampoTipoSignificato
servicestringIdentificatore della piattaforma.
handlestringNome visualizzato o account normalizzato.
idstring | nullID stabile del provider, quando distinto dal nome.
howstringMetodo di prova, per esempio oauth, dns_txt, well_known, emailCode o backlink.
atstringData e ora del collegamento.
statestringactive o pending.
untilstring | nullScadenza del subentro in attesa.
takeoverinteger | nullID del subentro in attesa.
unicodestring, optionalForma Unicode di un dominio internazionale. Usa il nome ASCII come identificatore.
addedIninteger | nullVersione che ha aggiunto il collegamento.
logIndexinteger | nullIndice della versione nel registro, a partire da zero.
checkCardLinkCheck, optionalIl ricontrollo periodico della prova fatto dal server (dal 30 ottobre 2026), per un collegamento attivo a un dominio, al Fediverso o a GitHub che ha controllato almeno una volta. È la sua parola, non fa parte della scheda firmata.
Ricontrollo di una prova CardLinkCheck
CampoTipoSignificato
statestringok, failing (il posto ha risposto e la prova non c’è) o unreachable (nessuna risposta).
atstringData e ora dell’ultimo controllo che ha avuto una risposta.
sincestring, optionalDa quando la prova non si conferma. Manca finché è ok.
reportedbooleanVero quando sono passati 30 giorni senza conferma e il proprietario è stato avvisato. Il collegamento resta.
Impronta della scheda Fingerprint
CampoTipoSignificato
wordsobjecten e it contengono le stesse dodici posizioni nelle rispettive liste di parole.
digitsarray<string>Dodici gruppi di cinque cifre decimali.
Affiliazione a un’organizzazione CardOrg
CampoTipoSignificato
nintegerNumero permanente della scheda.
urlstringURL permanente della scheda.
namestringNome visualizzato, soggetto a moderazione.
rolestringRuolo dell’affiliazione accettata.
sincestringData e ora di inizio dell’affiliazione.
nameHiddenbooleanIndica se lo staff nasconde il nome.
logoobject | nullTipo e URL dell’immagine, se disponibile.
Membro dell’organizzazione CardMember
CampoTipoSignificato
nintegerNumero permanente della scheda del membro.
urlstringURL della scheda del membro.
namestringNome visualizzato del membro.
rolestringRuolo del membro.
statestringStato dell’affiliazione, inclusi gli inviti in attesa.
sincestring | nullData e ora di accettazione, se accettato.
iconstring | nullIcona del ruolo, se presente.
nameHiddenbooleanIndica se lo staff nasconde il nome del membro.
logoobject | nullTipo e URL dell’immagine.
Evento nella storia della scheda CardEvent
CampoTipoSignificato
tstringData e ora di pubblicazione in ISO 8601 UTC.
kindstringTipo di modifica, per esempio created, added, revoked, renamed o takeover.
byobjectdevice, key e identity di chi firma, dove disponibili.
ninteger | nullVersione della scheda, oppure null per un evento esterno.
logIndexinteger | nullIndice nel registro a partire da zero.
devicestring | nullDispositivo interessato dalla modifica.
servicestring | nullPiattaforma interessata dalla modifica.
handlestring | nullAccount interessato dalla modifica.
changesarray<string>Tutte le modifiche della versione, in ordine fisso.
Prova della scheda CardProof
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.
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.
Versione nel formato 2 V2Version
CampoTipoSignificato
labelstringL’intestazione canonica esattamente come firmata, dopo il prefisso veil-rubrica:identity-version:v2 e un a capo. Per un’organizzazione porta signer, la scheda del membro che firma e la sua versione. Il suo hash è il c che l’indice tiene per la versione.
bodystringIl corpo canonico: le operazioni fuori da label.auth e il sale. Non porta mai signer. label.body è il suo hash.
signaturestringLa firma sul prefisso e sull’intestazione.
signedBystringLa chiave che ha firmato.
logIndexinteger | nullPosizione della voce della versione nel registro, da zero.
publishedAtstring | nullPrima controfirma sul primo checkpoint che la conteneva.
entrystringLa voce della versione nel registro, come testo: key, label, signature e v. L’indice verifica la firma da questa sola voce.
iinteger, optionalNell’elenco authority di una scheda: la posizione della voce nel registro, uguale a logIndex.
inclusionarray<string>, optionalNell’elenco authority di una scheda: la prova di inclusione della voce in hex, dal fratello più profondo, sul checkpoint di index. Manca senza un registro verificato.
Pacchetto d’indice V2IndexBundle
CampoTipoSignificato
checkpointobjectnote, il checkpoint firmato dal registro con le controfirme dei testimoni, e size.
entryobjectL’ultima voce d’indice del checkpoint: i, entry e la sua prova di inclusione.
valueobject | nullIl valore della scheda nell’indice: auth, closed, latest e standing. Null quando la scheda non è nell’indice.
proofobjectbitmap e siblings: la prova di value sotto la radice della voce d’indice.
tailarray<object>Le voci dopo la voce d’indice, ognuna con i, entry e inclusion. Applica tu a value quelle di questa scheda.
statementsarray<StatementEntry> | nullLa prima pagina, al più 200, delle dichiarazioni dello staff contate per la scheda, dalla più recente. La prima è value.standing e ogni prev è la i della successiva. Un array vuoto vuol dire nessuna dichiarazione, null che il server non è riuscito a leggere o a provare la catena.
statementsNextstring | nullL’indirizzo della pagina dopo delle dichiarazioni, o null quando la catena finisce qui.
Voce di una dichiarazione StatementEntry
CampoTipoSignificato
iintegerLa posizione della voce nel registro.
entrystringIl testo della voce come lo tiene il registro, firma compresa.
inclusionarray<string>Prova di inclusione in hex, dal fratello più profondo, sul checkpoint del pacchetto d’indice della scheda.
byinteger, optionalNumero della scheda del membro dello staff che ha firmato. Un’indicazione per la pagina: conta il signer della voce.
Chiave pubblica di altri sistemi
CampoTipoSignificato
typestringssh-ed25519, ssh-ecdsa-p256, ssh-ecdsa-p384, ssh-rsa, pgp, minisign, ed25519, ml-dsa-44, ml-dsa-65 o ml-dsa-87.
fpstringL’impronta come la stampano i suoi strumenti: SHA256:… per SSH e ML-DSA, le 40 cifre esadecimali maiuscole dell’impronta di versione 4 per OpenPGP, l’ID di 16 cifre per minisign, la chiave in hex per Ed25519.
labelstringIl nome che la persona ha dato alla chiave, fino a 40 caratteri.
pubstringLa chiave pubblica nella sua forma canonica, senza commento. Per OpenPGP, la base64 dei suoi pacchetti: la chiave principale con le sue auto-firme, gli user ID che la persona ha tenuto, le sottochiavi di firma.
idsarray<string> | optionalSolo OpenPGP, quando la chiave porta user ID: quelli che la persona ha scelto di tenere, come li scrive la chiave. Il tuo client li rilegge da pub e mostra solo quelli con un’auto-certificazione valida.
addedInintegerLa versione della scheda che ha aggiunto la chiave.
sincestringQuando quella versione è stata pubblicata.
logIndexinteger | nullLa voce del registro di quella versione.
proofOkbooleanIl controllo della prova fatto dal server. Solo informativo.
anchorobject | nullIl checkpoint citato: origin, size, root e signedAt, l’orario delle controfirme del quorum.
consistencyobject | nullUna prova di coerenza RFC 6962 {size, proof} dalla taglia citata alla taglia del checkpoint della scheda, o null.

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.
ETagW/"<SHA-256 of the JSON bytes>"Rimandalo in If-None-Match. Il server ricostruisce la scheda con visibilità, moderazione e prove correnti, e risponde 304 solo se i byte del JSON sono gli stessi.
Cache-Controlprivate, no-cache, must-revalidateUna cache condivisa non conserva la scheda, e un client la riconvalida prima di ogni riuso.
Retry-Afterinteger seconds, on rate_limited or busyAttendi almeno questo intervallo prima di riprovare. Altri codici 429/503 non lo includono necessariamente.

Cosa verificare#

Verifica proof, la catena delle versioni e l’identità attesa. Il solo riepilogo non contiene questa prova.

Note d’uso#

  • Senza .json, manda Accept impostato a application/json. La variante /v1 richiede il numero permanente.
  • Su un registro in formato 2 la scheda aggiunge format, current, authority, authorityNext, state, index e standing, e proof porta la voce v2 al posto del record. index.statements è la prima pagina delle dichiarazioni dello staff sulla scheda, e index.statementsNext porta alla pagina dopo.

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.

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.