veil

Chiedi l’accoppiamento di un dispositivo

Crea un codice temporaneo di accoppiamento per la chiave pubblica di un nuovo dispositivo.

POST/v1/device-requests
Accesso
Crea dati temporanei
Client
Client locale o server

Corpo JSON#

NomePosizioneSignificato
keyObbligatorioJSONLa chiave pubblica del nuovo dispositivo.
algJSONed25519 oppure mldsa65-ed25519.
deviceObbligatorioJSONNome del dispositivo da 1 a 40 caratteri.

Esempi di richiesta#

cURL
curl -fsS -X POST 'https://veil.rip/v1/device-requests' --json @request.json

Risposta#

HTTP 201application/json

201 con code, display, key, alg, device, createdAt ed expiresAt. Il codice dura dieci minuti.

CampoTipoSignificato
codestringCodice privato di accoppiamento di otto caratteri.
displaystringCodice raggruppato per la digitazione.
keystringChiave pubblica in attesa.
algstringIdentificatore dell’algoritmo di firma.
ed25519stringChiave Ed25519 o metà composita, in hex.
devicestringEtichetta richiesta del dispositivo.
createdAtstringData e ora di creazione.
expiresAtstringScadenza, dieci minuti dopo la creazione.

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.
Cache-Controlno-storeNon conservare le risposte private o temporanee in una cache condivisa.
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#

  • La creazione dei codici è limitata a 10 all’ora per IP. La lettura dei codici è limitata a 5 al minuto per IP e richiede una chiave attiva di una persona.

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_name

Un nome contiene caratteri invisibili, controlli di direzione o caratteri di formato non ammessi.

Usa un nome visibile nella forma Unicode ammessa e firma la richiesta corretta.

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.

409key_already_used

Una chiave del dispositivo appartiene già a un’identità e non può essere riusata da un’altra.

Usa la scheda esistente oppure genera una nuova chiave del dispositivo.

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.

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.