Approva un trasloco
Al vecchio indirizzo, firmata da una chiave di dispositivo attiva della scheda: la versione successiva della scheda che aggiunge la chiave del trasloco come dispositivo, la ricevuta e lo SHA-256 del segreto. Controllata come una pubblicazione, tenuta e non pubblicata.
/v1/moves/{nonce}/approve- Accesso
- Richiesta firmata
- Client
- Client locale o server
Parametri#
| Nome | Posizione | Significato |
|---|---|---|
nonceObbligatorio | Percorso | Il nonce del trasloco: 22 caratteri in base64url. |
Corpo JSON#
| Nome | Posizione | Significato |
|---|---|---|
labelObbligatorio | JSON | La label della versione, come per una pubblicazione. |
bodyObbligatorio | JSON | Il corpo della versione. |
signatureObbligatorio | JSON | La firma della label con la chiave che firma la richiesta. |
secretHashObbligatorio | JSON | SHA-256 del segreto di 32 byte del trasloco, in hex minuscolo. |
retireObbligatorio | JSON | Se la chiave vecchia si ritira dopo. |
chatObbligatorio | JSON | Se il browser vecchio tiene chiavi della chat da consegnare. |
receiptObbligatorio | JSON | La ricevuta, veil-rubrica:move-receipt:v1 e le sue otto righe. |
receiptSignatureObbligatorio | JSON | La firma Ed25519 della ricevuta in hex con la stessa chiave. |
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 -fsS -X POST 'https://veil.pub/v1/moves/MOVE_NONCE/approve' \
-H "X-Public-Key: $OLD_KEY" -H "X-Signature: $REQUEST_SIGNATURE" --json @approval.jsonRisposta#
200 con nonce, identity e version.
| Campo | Tipo | Significato |
|---|---|---|
nonce | string | Il trasloco. |
identity | integer | Il numero della scheda. |
version | integer | La versione che aggiunge la chiave nuova. |
Intestazioni della risposta#
| Intestazione | Valore | Significato |
|---|---|---|
Content-Type | application/json | Usa il tipo dichiarato per scegliere come leggere il corpo. |
Date | HTTP date | Ora del server. Confrontala con il tuo orologio per firmare le richieste. |
Cache-Control | no-store | Non conservare le risposte private o temporanee in una cache condivisa. |
Retry-After | integer seconds, on rate_limited or busy | Attendi almeno questo intervallo prima di riprovare. Altri codici 429/503 non lo includono necessariamente. |
Note d’uso#
- Spostare un browser dal vecchio indirizzo della rubrica al nuovo (dal 6 novembre 2026): una chiave vive sull’origine che l’ha fatta, quindi il nuovo indirizzo fa una chiave sua e la scheda la aggiunge con una versione firmata al vecchio indirizzo, nello stesso browser. La versione resta da parte finché la chiave nuova non torna con il segreto.
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
| HTTP | Codice | Significato e cosa fare |
|---|---|---|
| 400 | invalid_json | Il corpo non è un oggetto JSON, contiene chiavi duplicate o dati finali. Invia un solo oggetto JSON valido con |
| 400 | invalid_nonce | Il nonce della richiesta firmata ha un formato errato. Genera un nuovo nonce da 16 a 128 caratteri usando lettere, cifre, _ o -. |
| 400 | invalid_parameter | Un campo del percorso, della query o del corpo manca, è malformato o fuori intervallo. Correggi il campo indicato in |
| 400 | invalid_signature_alg |
Usa un algoritmo di firma supportato e la codifica corretta per chiave e firma. |
| 400 | invalid_timestamp | Il timestamp della richiesta firmata non è espresso in millisecondi Unix. Usa un timestamp Unix intero in millisecondi e firma la richiesta corretta. |
| 400 | wrong_format | La richiesta o la lettura appartiene all’altro formato del registro di questo server: un record v1 su un registro in formato 2, o una lettura del formato 2 su un registro in formato 1. Leggi |
| 401 | invalid_signature | La firma della richiesta HTTP non è valida. Firma metodo, percorso e byte del corpo esatti, senza modificarli dopo. |
| 401 | missing_signature | La richiesta richiede una firma del dispositivo e le intestazioni mancano o non sono leggibili. Invia |
| 401 | stale_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. |
| 403 | key_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. |
| 403 | signer_not_authorised | Il membro dell’organizzazione o il ruolo di firma non può pubblicare questa modifica. Controlla l’affiliazione accettata e il ruolo richiesto per la modifica. |
| 404 | no_move | Questa rubrica ha un indirizzo solo, quindi non c’è un browser da spostare. Fai una scheda o accedi a questo indirizzo. |
| 404 | not_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. |
| 409 | move_approved | Il trasloco è già stato approvato. Completalo dal nuovo indirizzo, o comincia un altro trasloco. |
| 409 | move_done | Il trasloco è finito: la chiave nuova è sulla scheda. Non c’è niente da fare. Leggi la scheda per vedere la chiave nuova. |
| 409 | replayed_nonce | La chiave di firma ha già usato questo nonce. Controlla se la richiesta precedente è riuscita prima di crearne una nuova firmata. |
| 409 | version_conflict | La versione non può essere pubblicata rispetto allo stato corrente della scheda. Leggi la scheda più recente, riconcilia la modifica e firma una nuova versione. |
| 410 | move_expired | Il trasloco ha aspettato più di dieci minuti. Comincia un altro trasloco. |
| 413 | payload_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. |
| 422 | invalid_move | L’approvazione non è un trasloco: la sua versione deve aggiungere solo la chiave del trasloco come dispositivo della scheda, e la sua ricevuta deve nominare il trasloco, la scheda, le due chiavi, la versione e le scelte, firmata dalla chiave che firma la richiesta. Ricostruisci la versione e la ricevuta dalla scheda e dal trasloco come sono adesso. |
| 429 | rate_limited | È stato superato un limite anonimo, delle richieste firmate o della chiave API. Attendi almeno i secondi indicati da |
| 500 | internal_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. |
| 503 | busy | L’applicazione ha raggiunto un limite temporaneo di concorrenza o del database. Attendi i secondi indicati da |