veil

Completa la prova di un account

Completa una prova con la stessa chiave che l’ha iniziata.

POST/v1/links/{state}/complete
Accesso
Richiesta firmata
Client
Client locale o server

Parametri#

NomePosizioneSignificato
stateObbligatorioPercorsoLo stato privato di 64 caratteri esadecimali restituito da start.

Corpo JSON#

NomePosizioneSignificato
codeJSONCodice di conferma per le prove email.
returnCodeJSONCodice di ritorno usa e getta della callback OAuth.

Questa chiamata richiede anche le intestazioni comuni di firma, nonce e timestamp. Prepara e firma request.json prima di usare l’esempio. Firma delle richieste

Esempi di richiesta#

cURL
curl -fsS -X POST \
  -H "X-Public-Key: $PUBLIC_KEY" \
  -H "X-Signature: $REQUEST_SIGNATURE" --json @request.json \
  "https://veil.rip/v1/links/PROOF_STATE/complete"

Risposta#

HTTP 200application/json

Lo stato della prova, con un permesso quando verificata. Includi il permesso in una nuova versione firmata per pubblicare il collegamento.

CampoTipoSignificato
statestringStato privato della sessione di prova.
identityintegerNumero della scheda destinataria.
platformstringIdentificatore della piattaforma.
methodstringMetodo di prova.
statusstringpending, returned, verified, used o expired.
expiresAtstringScadenza della sessione.
subjectstring | nullIdentificatore normalizzato dell’account verificato.
displaystring | nullNome visualizzato verificato.
grantstring | nullGrant firmato monouso dopo la verifica, finché viene usato.
grantExpiresAtstring | nullScadenza del grant.
challengestring | nullIstruzioni pubbliche della prova.
claimedstring | nullAccount richiesto all’inizio, per i metodi che lo richiedono.
holderinteger | nullScheda attualmente titolare dell’account verificato.
waitDaysinteger | nullPeriodo di annullamento del subentro se un’altra scheda ne è titolare.
takeoverOpenboolean | nullIndica se un subentro è già aperto.

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.

Note d’uso#

  • DNS e Fediverso usano soltanto nonce e timestamp nel corpo. Il server controlla il record o il link di ritorno.

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_json

Il corpo non è un oggetto JSON, contiene chiavi duplicate o dati finali.

Invia un solo oggetto JSON valido con Content-Type application/json.

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.

403key_mismatch

La chiave di firma non è autorizzata per questa scheda o operazione.

Usa una chiave di dispositivo attiva con il ruolo di titolare o membro richiesto.

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.

409proof_pending

L’accesso OAuth non è ancora tornato.

Completa l’accesso al provider nel browser che lo ha avviato.

410proof_expired

La sessione temporanea di prova dell’account è scaduta.

Avvia una nuova sessione di collegamento.

413payload_too_large

Il corpo della richiesta supera il limite in byte dell’endpoint.

Riduci il corpo codificato. La gestione delle chiavi API ammette al massimo 8 KiB.

422proof_failed

Il provider, il codice o la prova pubblicata non hanno superato la verifica.

Leggi error.message, correggi la prova e riprova mentre la sessione è valida.

422proof_not_found

Il record DNS, il file sul sito o il collegamento sul profilo richiesti non sono ancora visibili.

Pubblica la prova esatta e attendi la propagazione prima di ricontrollare.

429too_many_attempts

Questa sessione di prova ha superato il numero di tentativi con codice errato.

Avvia una nuova sessione di prova. Questo codice è distinto da rate_limited per le quote.

503provider_not_configured

Il provider di prova scelto non è disponibile su questo server.

Leggi /v1/platforms per i metodi disponibili.

Errori comuni delle richieste
HTTPCodiceSignificato e cosa fare
400invalid_nonce

Il nonce della richiesta firmata ha un formato errato.

Genera un nuovo nonce da 16 a 128 caratteri usando lettere, cifre, _ o -.

400invalid_signature_alg

X-Signature-Alg non è supportato.

Usa un algoritmo di firma supportato e la codifica corretta per chiave e firma.

400invalid_timestamp

Il timestamp della richiesta firmata non è espresso in millisecondi Unix.

Usa un timestamp Unix intero in millisecondi e firma la richiesta corretta.

401invalid_signature

La firma della richiesta HTTP non è valida.

Firma metodo, percorso e byte del corpo esatti, senza modificarli dopo.

401missing_signature

La richiesta richiede una firma del dispositivo e le intestazioni mancano o non sono leggibili.

Invia X-Public-Key, X-Signature e i metadati della richiesta firmata. Una chiave API non sostituisce la firma del dispositivo.

401stale_timestamp

Il timestamp firmato è fuori dalla finestra temporale ammessa.

Confronta l’intestazione Date del server con il tuo orologio, poi genera nuovi nonce, timestamp e firma.

403key_banned

La chiave del dispositivo che firma è sospesa dallo staff di Veil.

Usa una chiave attiva autorizzata o chiedi allo staff di riesaminare la restrizione.

409replayed_nonce

La chiave di firma ha già usato questo nonce.

Controlla se la richiesta precedente è riuscita prima di crearne una nuova firmata.

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.