{"revision":"0ed62d2c742f8e20","language":"it","entry":{"id":"errors","kind":"guide","group":"guides","title":"Risposte ed errori","summary":"Leggi stati HTTP, campi della risposta e codici di errore stabili, poi decidi se correggere, riprovare o fermarti.","sections":[{"kind":"paragraph","text":"Gli errori delle API della rubrica usano un oggetto error con code e message. Gestisci lo stato HTTP ed `error.code`. Il messaggio inglese spiega l’errore corrente e può cambiare; non interpretarlo come un contratto."},{"kind":"code","language":"json","code":"{\n  \"error\": {\n    \"code\": \"invalid_parameter\",\n    \"message\": \"Supply exactly one lookup parameter\"\n  }\n}"},{"kind":"heading","text":"Una richiesta riuscita può dare un verdetto negativo"},{"kind":"paragraph","text":"HTTP 200 indica che la richiesta di verifica è stata elaborata. valid uguale a false è un risultato della verifica. Leggi reason e `signatureOk` prima di accettare il messaggio. Allo stesso modo, la disponibilità di un alias può restituire 200 con `available=false` e una scheda completa può avere `proof=null` quando la verifica corrente del registro non è disponibile."},{"kind":"heading","text":"Correggere e riprovare le richieste","anchor":"retrying"},{"kind":"list","items":["400, 413 e 422 richiedono dati corretti. Inviare di nuovo gli stessi byte non li corregge.","401 e 403 richiedono credenziali, firma, permessi o ruolo validi. Una chiave API non valida non attiva l’accesso anonimo.","409 richiede una nuova lettura dello stato corrente. Controlla se la scrittura precedente è già riuscita prima di firmare un’altra operazione.","Per `rate_limited` e busy, attendi i secondi di `Retry-After`. Per errori temporanei delle letture usa attese crescenti con variazione casuale e un limite. Non ripetere alla cieca una scrittura firmata; leggi prima la scheda o lo stato dell’operazione, poi usa nuovi nonce e firma se serve."]},{"kind":"heading","text":"Schede cancellate","anchor":"erased-cards"},{"kind":"paragraph","text":"HTTP 410 con `error.code` erased restituisce anche erased=true, n, closedAt, token e logIndexes. Una rimozione dello staff aggiunge removed=true, category e, quando disponibile, logIndex. È una ricevuta storica; non ripristina l’autorità della scheda. Anche `proof_expired` per una prova temporanea usa 410 e contiene soltanto l’involucro di errore ordinario."},{"kind":"heading","text":"Tipi di contenuto e risposte vuote","anchor":"media-types"},{"kind":"paragraph","text":"Leggi `Content-Type` prima di interpretare il corpo. Immagini, script, note firmate del registro e tessere non sono JSON. Una lettura condizionale della documentazione o di una scheda può restituire 304 senza corpo. Riusa la rappresentazione salvata con il suo `ETag`. Il callback OAuth mostra una pagina HTML anche in caso di errore. Le risorse di log.veil.rip usano un proprio protocollo testuale o binario e non garantiscono l’involucro di errore della rubrica. Anche un proxy o CDN può restituire un errore HTML; gestisci gli errori di lettura del JSON."},{"kind":"error-catalogue"},{"kind":"links","ids":["limits","api-keys","signed-requests","verify-message","catalogue-entry"]}],"errorDetails":[{"status":400,"code":"bad_request","description":"La richiesta HTTP non è leggibile.","action":"Controlla la codifica e il corpo."},{"status":400,"code":"hash_needed","description":"La firma copre un hash del file che la richiesta non porta. Il messaggio comincia con il suo nome: sha256, sha512 o blake2b512.","action":"Calcola quell’hash del file (sha256sum, sha512sum o b2sum) e mandalo nel campo con lo stesso nome."},{"status":400,"code":"invalid_alias","description":"L’alias non rispetta le regole ASCII del nome.","action":"Usa da 3 a 32 lettere ASCII minuscole, cifre, trattini o trattini bassi; inizia con una lettera e termina con una lettera o cifra."},{"status":400,"code":"invalid_block","description":"Il blocco firma non è leggibile o indica un’altra rubrica.","action":"Incolla il blocco completo con il messaggio e usa la rubrica che indica."},{"status":400,"code":"invalid_file_signature","description":"La firma di un file o di un elenco di checksum non si legge. Il messaggio comincia con il motivo: unreadable, namespace (una firma SSH fatta per un uso diverso dai file), pgp_type, pgp_version, weak_hash, list_unreadable o block_message.","action":"Manda il file della firma come l’ha scritto lo strumento. Firma i file con ssh-keygen -Y sign -n file, gpg --detach-sign con SHA-256 o SHA-512, oppure minisign -Sm."},{"status":400,"code":"invalid_json","description":"Il corpo non è un oggetto JSON, contiene chiavi duplicate o dati finali.","action":"Invia un solo oggetto JSON valido con `Content-Type` application/json."},{"status":400,"code":"invalid_name","description":"Un nome contiene caratteri invisibili, controlli di direzione o caratteri di formato non ammessi.","action":"Usa un nome visibile nella forma Unicode ammessa e firma la richiesta corretta."},{"status":400,"code":"invalid_nonce","description":"Il nonce della richiesta firmata ha un formato errato.","action":"Genera un nuovo nonce da 16 a 128 caratteri usando lettere, cifre, _ o -."},{"status":400,"code":"invalid_parameter","description":"Un campo del percorso, della query o del corpo manca, è malformato o fuori intervallo.","action":"Correggi il campo indicato in `error.message` prima di inviare di nuovo."},{"status":400,"code":"invalid_signature_alg","description":"`X-Signature-Alg` non è supportato.","action":"Usa un algoritmo di firma supportato e la codifica corretta per chiave e firma."},{"status":400,"code":"invalid_timestamp","description":"Il timestamp della richiesta firmata non è espresso in millisecondi Unix.","action":"Usa un timestamp Unix intero in millisecondi e firma la richiesta corretta."},{"status":400,"code":"wrong_format","description":"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.","action":"Leggi `format` in GET /v1/log (assente vuol dire 1) e manda la forma di quel formato."},{"status":401,"code":"invalid_api_key","description":"La credenziale Bearer è malformata, sconosciuta, scaduta o revocata.","action":"Usa una chiave attiva. Per l’accesso pubblico anonimo, rimuovi del tutto `Authorization`. Credenziali non valide non attivano automaticamente l’accesso anonimo."},{"status":401,"code":"invalid_signature","description":"La firma della richiesta HTTP non è valida.","action":"Firma metodo, percorso e byte del corpo esatti, senza modificarli dopo."},{"status":401,"code":"missing_signature","description":"La richiesta richiede una firma del dispositivo e le intestazioni mancano o non sono leggibili.","action":"Invia `X-Public-Key`, `X-Signature` e i metadati della richiesta firmata. Una chiave API non sostituisce la firma del dispositivo."},{"status":401,"code":"stale_timestamp","description":"Il timestamp firmato è fuori dalla finestra temporale ammessa.","action":"Confronta l’intestazione Date del server con il tuo orologio, poi genera nuovi nonce, timestamp e firma."},{"status":403,"code":"api_key_scope","description":"La chiave API non ha il permesso read o verify, oppure l’endpoint non accetta chiavi Bearer.","action":"Usa il permesso corretto. Le modifiche alle schede e la gestione delle chiavi richiedono una firma del dispositivo."},{"status":403,"code":"api_key_suspended","description":"Questa chiave API è sospesa.","action":"Chiedi allo staff di ripristinarla; un’altra chiave non rimuove la sospensione dell’account."},{"status":403,"code":"cors_not_allowed","description":"Un preflight del browser richiede un metodo o un’intestazione fuori dal CORS pubblico.","action":"Usa dal browser le letture pubbliche anonime o la verifica. Mantieni le credenziali Bearer e di firma nei flussi locali o server supportati."},{"status":403,"code":"developer_suspended","description":"L’account API del titolare è sospeso oppure la scheda titolare non è disponibile.","action":"Controlla l’account titolare e le restrizioni dello staff. Creare un’altra chiave non aggira la sospensione."},{"status":403,"code":"identity_banned","description":"La scheda che agisce è sospesa dallo staff di Veil.","action":"Attendi la fine della restrizione o chiedi allo staff di riesaminarla."},{"status":403,"code":"invalid_token","description":"Il token del link non è la firma del server per questa scheda.","action":"Copia il link intero dall’email, oppure togli gli avvisi dalla pagina dell’account.","scope":"endpoint"},{"status":403,"code":"key_banned","description":"La chiave del dispositivo che firma è sospesa dallo staff di Veil.","action":"Usa una chiave attiva autorizzata o chiedi allo staff di riesaminare la restrizione."},{"status":403,"code":"key_mismatch","description":"La chiave di firma non è autorizzata per questa scheda o operazione.","action":"Usa una chiave di dispositivo attiva con il ruolo di titolare o membro richiesto."},{"status":403,"code":"recovery_key_only","description":"Un’operazione riservata al recupero è stata firmata con un altro ruolo.","action":"Usa la chiave di recupero nel flusso documentato."},{"status":403,"code":"role_not_allowed","description":"Il ruolo che firma non può eseguire questa modifica.","action":"Usa una chiave con il ruolo richiesto."},{"status":403,"code":"signer_not_authorised","description":"Il membro dell’organizzazione o il ruolo di firma non può pubblicare questa modifica.","action":"Controlla l’affiliazione accettata e il ruolo richiesto per la modifica."},{"status":404,"code":"not_found","description":"La scheda, la chiave, l’alias, il codice o la risorsa richiesti non sono stati trovati.","action":"Controlla l’identificatore. Codici e anteprime temporanei potrebbero essere scaduti o già usati."},{"status":409,"code":"account_locked","description":"La moderazione impedisce di richiedere questo account.","action":"Controlla lo stato pubblico di moderazione della scheda corrente."},{"status":409,"code":"action_pending","description":"Un avviso precedente sullo stesso account, o un’azione dello staff della stessa famiglia, aspetta ancora il registro.","action":"Riprova quando è pubblicato, entro qualche minuto."},{"status":409,"code":"alert_in_force","description":"L’account ha già questo stesso avviso.","action":"Non serve altro. Per correggere la data o il nuovo account, manda l’avviso con i dati nuovi."},{"status":409,"code":"alert_not_in_force","description":"`regained` chiude un avviso, e l’account non ne ha uno in vigore.","action":"Leggi gli avvisi della scheda (GET /v1/identities/{n}/alerts) prima di chiuderne uno."},{"status":409,"code":"alias_quarantined","description":"L’alias è nei 30 giorni di quarantena dopo il rilascio.","action":"Leggi `reusableAt` e il titolare precedente tramite l’endpoint degli alias."},{"status":409,"code":"alias_reserved","description":"L’alias scelto è riservato al servizio.","action":"Scegli un altro alias."},{"status":409,"code":"alias_taken","description":"L’alias è assegnato oppure riservato da una pubblicazione in corso.","action":"Scegli un altro alias oppure ricontrolla la disponibilità dopo la pubblicazione."},{"status":409,"code":"already_member","description":"Questa affiliazione esiste già.","action":"Leggi le affiliazioni correnti prima di pubblicare un altro invito."},{"status":409,"code":"already_retracted","description":"La dichiarazione indicata in `retracts` è già ritirata.","action":"Pubblica invece una dichiarazione nuova."},{"status":409,"code":"api_key_limit","description":"Il titolare ha già 20 chiavi API non scadute e non revocate.","action":"Revoca una chiave inutilizzata prima di crearne un’altra. Le chiavi sospese vengono conteggiate."},{"status":409,"code":"callback_used","description":"Questo accesso OAuth è già tornato una volta.","action":"Riprendi il flusso nel browser originale o avvia una nuova sessione di collegamento."},{"status":409,"code":"erase_already_requested","description":"Una cancellazione è già in attesa.","action":"Leggi sulla scheda la data e ora di esecuzione prevista."},{"status":409,"code":"erase_pending","description":"Su un registro in formato 2 la scheda ha una cancellazione in attesa. La sua chiusura firmata nomina la versione corrente, quindi la scheda non pubblica finché la cancellazione non è annullata.","action":"Annulla la cancellazione con POST /v1/identities/{n}/erase/cancel, poi pubblica la versione."},{"status":409,"code":"grant_used","description":"Un grant di verifica o affiliazione è già stato usato.","action":"Controlla la versione risultante della scheda, poi ottieni un nuovo grant se serve ancora."},{"status":409,"code":"identity_exists","description":"Un’identità usa già questo token.","action":"Controlla la pubblicazione esistente. Genera una nuova identità soltanto se serve una scheda diversa."},{"status":409,"code":"invitation_closed","description":"L’invito è stato accettato, rifiutato o chiuso.","action":"Leggi le affiliazioni correnti prima di continuare."},{"status":409,"code":"invitation_withdrawn","description":"L’organizzazione non offre più l’invito.","action":"Chiedi un nuovo invito."},{"status":409,"code":"key_already_used","description":"Una chiave del dispositivo appartiene già a un’identità e non può essere riusata da un’altra.","action":"Usa la scheda esistente oppure genera una nuova chiave del dispositivo."},{"status":409,"code":"no_erase_requested","description":"Non c’è una cancellazione in attesa da annullare.","action":"Leggi lo stato corrente della scheda."},{"status":409,"code":"proof_pending","description":"L’accesso OAuth non è ancora tornato.","action":"Completa l’accesso al provider nel browser che lo ha avviato."},{"status":409,"code":"replayed_nonce","description":"La chiave di firma ha già usato questo nonce.","action":"Controlla se la richiesta precedente è riuscita prima di crearne una nuova firmata."},{"status":409,"code":"report_already_open","description":"Chi chiama ha già una segnalazione aperta per questa scheda.","action":"Attendi che lo staff risolva la segnalazione esistente."},{"status":409,"code":"salt_ticket_invalid","description":"Il ticket del sale è sconosciuto, scaduto o già usato.","action":"Richiedi un nuovo ticket e ricostruisci e firma la prima versione con esso."},{"status":409,"code":"signer_stale","description":"Su un registro in formato 2 `signer.n` di una voce firmata è indietro rispetto alla versione corrente della scheda che firma.","action":"Rileggi la scheda che firma e firma di nuovo la voce con la sua versione corrente in `signer.n`."},{"status":409,"code":"takeover_already_open","description":"Un subentro per questo account collegato è già aperto.","action":"Leggi il subentro in attesa invece di aprirne un altro."},{"status":409,"code":"takeover_closed","description":"Il subentro è già annullato o completato.","action":"Leggi il suo stato corrente."},{"status":409,"code":"version_conflict","description":"La versione non può essere pubblicata rispetto allo stato corrente della scheda.","action":"Leggi la scheda più recente, riconcilia la modifica e firma una nuova versione."},{"status":410,"code":"erased","description":"La scheda esisteva ed è stata cancellata o rimossa. La risposta contiene anche la ricevuta pubblica di cancellazione.","action":"Smetti di usare questa scheda come autorità corrente. Conserva soltanto la ricevuta pubblica se serve."},{"status":410,"code":"proof_expired","description":"La sessione temporanea di prova dell’account è scaduta.","action":"Avvia una nuova sessione di collegamento."},{"status":413,"code":"payload_too_large","description":"Il corpo della richiesta supera il limite in byte dell’endpoint.","action":"Riduci il corpo codificato. La gestione delle chiavi API ammette al massimo 8 KiB."},{"status":422,"code":"account_not_linked","description":"L’avviso riguarda un account che la scheda non ha, oppure `to.subject` non è un altro account della scheda sulla stessa piattaforma.","action":"Indica un account collegato, oppure lascia `to.subject` null e scrivi il nuovo nome."},{"status":422,"code":"authority_limit","description":"Su un registro in formato 2 la versione lascerebbe più di 1.024 membri nell’autorità di un’organizzazione: proprietari e amministratori, o ogni ruolo dello staff nell’organizzazione Veil.","action":"Togli prima un proprietario o un amministratore. Anche una rimozione nella stessa versione libera un posto."},{"status":422,"code":"bad_entry","description":"Su un registro in formato 2 `salt`, `entry` o `closing` di una richiesta non vanno bene. `error.message` nomina il campo.","action":"Correggi il campo indicato, firma di nuovo la voce con la chiave della richiesta e manda una nuova richiesta firmata."},{"status":422,"code":"cannot_revoke_self","description":"La revoca della propria chiave lascerebbe la scheda senza una chiave attiva, oppure la chiave di recupero viene revocata senza sostituirla.","action":"Mantieni un’altra chiave attiva. Sostituisci la chiave di recupero nella stessa versione che la revoca."},{"status":422,"code":"closing_required","description":"Su un registro in formato 2 una cancellazione è arrivata senza la sua voce di chiusura firmata in `closing`.","action":"Firma la voce di chiusura con la stessa chiave e mandala come `closing`, con `text` e `signature`."},{"status":422,"code":"external_limit","description":"La scheda terrebbe più di 16 chiavi pubbliche di altri sistemi, o un’operazione addExternalKey supera 16 KiB in JSON canonico.","action":"Togli prima una chiave. Anche una rimozione nella stessa versione libera un posto."},{"status":422,"code":"file_needed","description":"Una firma staccata OpenPGP o una firma minisign legacy del file stesso. Copre i byte del file, e il server non vede mai il file.","action":"Controllala dove sta il file: su veil.rip/verify in un browser o con l’azione GitHub. Oppure firma un elenco di checksum, che il server controlla in ogni formato."},{"status":422,"code":"grant_expired","description":"Il grant di verifica o affiliazione è scaduto.","action":"Ottieni un nuovo grant prima di pubblicare la versione."},{"status":422,"code":"invalid_grant","description":"Il grant di verifica o affiliazione non è valido oppure appartiene a un’altra operazione.","action":"Usa il grant emesso per questa specifica scheda, account o affiliazione."},{"status":422,"code":"invalid_logo","description":"L’immagine non supera i controlli su tipo, dimensione, risoluzione o contenuto. Dal 27 ottobre 2026 anche `inline` (il record porta l’immagine invece del suo hash), `missing` (un’immagine nuova senza `logoData`) o `mismatch` (`logoData` non ha la misura o lo SHA-256 che il record nomina).","action":"Correggi l’immagine secondo `error.message` prima di caricarla di nuovo."},{"status":422,"code":"invalid_op","description":"Un’operazione è sconosciuta, malformata, non è del tipo o della versione della scheda, oppure non cambia niente.","action":"Correggi l’operazione indicata in `error.message`."},{"status":422,"code":"invalid_record","description":"La versione dell’identità viola le regole del record firmato.","action":"Correggi il problema di convalida, rendi canonico il record e firmalo di nuovo."},{"status":422,"code":"invalid_record_signature","description":"La firma della versione dell’identità non è valida.","action":"Firma il record canonico esatto con il prefisso identity-version e la chiave dichiarata."},{"status":422,"code":"invalid_statement","description":"Un avviso o una dichiarazione di una scheda non rispetta lo schema: un campo mancante o in più, un testo troppo lungo o con caratteri nascosti, un link non https, una data nel futuro.","action":"Correggi il campo indicato in `error.message` e firma di nuovo la dichiarazione e la sua voce."},{"status":422,"code":"invalid_statement_signature","description":"La firma della dichiarazione di cancellazione non è valida.","action":"Firma i byte esatti della dichiarazione con prefisso e chiave richiesti."},{"status":422,"code":"key_expired","description":"La chiave OpenPGP o la sua sottochiave di firma è scaduta.","action":"Prolungane la scadenza sul tuo computer (gpg --quick-set-expire), poi incolla di nuovo la chiave e firma una sfida nuova."},{"status":422,"code":"key_extra_packets","description":"La chiave OpenPGP porta ancora una foto, la certificazione di un’altra persona o altro materiale che la scheda non tiene.","action":"Aggiungi la chiave dalla pagina della tua scheda, che tiene solo quello che una scheda porta: la chiave, le sue sottochiavi di firma e gli user ID che scegli."},{"status":422,"code":"key_revoked","description":"La chiave OpenPGP porta una firma di revoca.","action":"Una chiave revocata non va su una scheda. Porta una chiave che usi ancora."},{"status":422,"code":"key_unsupported","description":"Un tipo di chiave che Veil non tiene: chiavi SSH su chiave di sicurezza (sk-…), ECDSA P-521, certificati SSH, una chiave OpenPGP che non è di versione 4, o un algoritmo OpenPGP diverso da RSA, ECDSA P-256 o P-384 ed Ed25519.","action":"Usa uno dei tipi elencati: ssh-ed25519, ssh-ecdsa-p256, ssh-ecdsa-p384, ssh-rsa, pgp, minisign, ed25519, ml-dsa-44, ml-dsa-65, ml-dsa-87."},{"status":422,"code":"key_weak","description":"RSA sotto 2048 bit o DSA, in SSH o in OpenPGP, un punto Ed25519 di ordine piccolo, o una firma RSA fatta con SHA-1 (ssh-rsa).","action":"Porta una chiave più forte. ssh-keygen -Y sign firma RSA con rsa-sha2-512 per impostazione predefinita."},{"status":422,"code":"keys_limit","description":"Su un registro in formato 2 la versione lascerebbe a una persona più di 64 chiavi attive.","action":"Revoca prima una chiave. Anche una revoca nella stessa versione libera un posto."},{"status":422,"code":"label_mismatch","description":"prev, body, auth o state dell’intestazione non sono quelli che danno la catena, il corpo e le operazioni.","action":"Rileggi la scheda, pianifica le operazioni sul suo stato corrente e firma la nuova intestazione."},{"status":422,"code":"last_owner","description":"La modifica lascerebbe un’organizzazione senza un proprietario accettato.","action":"Aggiungi o accetta un altro proprietario prima di rimuovere l’ultimo."},{"status":422,"code":"links_need_verification","description":"Un nuovo collegamento di account non ha un grant di verifica accettabile.","action":"Completa la prova dell’account prima di pubblicarne il collegamento."},{"status":422,"code":"members_limit","description":"Su un registro in formato 2 un invito porterebbe un’organizzazione oltre 100.000 membri e inviti in vigore.","action":"Togli dei membri o ritira degli inviti prima di invitare ancora."},{"status":422,"code":"membership_needs_grant","description":"Un’affiliazione all’organizzazione non ha il grant di accettazione.","action":"Accetta l’invito e includi il grant nella prossima versione firmata."},{"status":422,"code":"no_verified_email","description":"La scheda non ha un collegamento email verificato, quindi non c’è dove mandare gli avvisi.","action":"Collega prima un indirizzo email alla scheda, poi attiva gli avvisi.","scope":"endpoint"},{"status":422,"code":"not_a_person","description":"La scheda è un’organizzazione dove è richiesta una persona.","action":"Usa l’endpoint delle organizzazioni oppure la scheda di una persona idonea."},{"status":422,"code":"not_an_organization","description":"La scheda è una persona dove è richiesta un’organizzazione.","action":"Usa l’endpoint delle persone oppure la scheda di un’organizzazione."},{"status":422,"code":"not_for_organizations","description":"Questo metodo prova un account personale e non è disponibile per le organizzazioni.","action":"Scegli un metodo di prova per organizzazioni supportato da /v1/platforms."},{"status":422,"code":"private_key_material","description":"Un testo di un’operazione addExternalKey contiene materiale privato: una chiave privata PEM o OpenSSH, un blocco privato PGP o un pacchetto di chiave segreta, una chiave segreta minisign, una chiave segreta Ed25519 di 64 byte, o il seme o la chiave segreta di ML-DSA. Non si salva niente e la risposta non ripete il testo.","action":"Considera quella chiave esposta e sostituiscila. Manda solo la chiave pubblica e la firma della sfida."},{"status":422,"code":"proof_anchor","description":"Il checkpoint citato non è di questo registro, non ha la firma del registro o il quorum delle controfirme, o la sua radice non è quella del registro a quella taglia.","action":"Cita intera la nota del checkpoint controfirmato come la scheda la dà in index.checkpoint.note."},{"status":422,"code":"proof_failed","description":"Il provider, il codice o la prova pubblicata non hanno superato la verifica.","action":"Leggi `error.message`, correggi la prova e riprova mentre la sessione è valida."},{"status":422,"code":"proof_invalid","description":"La sfida nomina un’altra chiave di dispositivo di quella che firma la versione, o la firma non è la firma della chiave sulla sfida di questa scheda. Il messaggio dice la causa: un’altra chiave, un altro namespace SSH, un hash che non vale, la sfida salvata in UTF-16 o con una riga vuota dopo, un altro testo, o una forma diversa da quella che dice proof.variant.","action":"Firma di nuovo i byte esatti della sfida dal browser che pubblica la versione: con namespace veil per SSH, con una firma staccata o in chiaro del file per OpenPGP. Una copia salvata su Windows (CRLF, un BOM UTF-8, senza l’ultimo a capo) vale se proof.variant ne dice la forma."},{"status":422,"code":"proof_not_found","description":"Il record DNS, il file sul sito o il collegamento sul profilo richiesti non sono ancora visibili.","action":"Pubblica la prova esatta e attendi la propagazione prima di ricontrollare."},{"status":422,"code":"proof_stale","description":"Il checkpoint citato dalla sfida è stato controfirmato più di 7 giorni fa, o l’ora dichiarata at è più vecchia di 7 giorni o avanti rispetto all’orologio del server.","action":"Prepara una sfida nuova dall’ultimo checkpoint della scheda e firmala di nuovo."},{"status":422,"code":"self_target","description":"Una scheda non può segnalare se stessa.","action":"Scegli la scheda a cui si riferisce la segnalazione."},{"status":422,"code":"staff_org_target","description":"Questa operazione non può riguardare l’organizzazione dello staff di Veil.","action":"Scegli un destinatario idoneo."},{"status":429,"code":"alert_quota","description":"La scheda ha fatto 10 avvisi sugli account nelle ultime 24 ore.","action":"Aspetta i secondi indicati da `Retry-After`."},{"status":429,"code":"rate_limited","description":"È stato superato un limite anonimo, delle richieste firmate o della chiave API.","action":"Attendi almeno i secondi indicati da `Retry-After`. Condividi coda e budget dei tentativi tra i tuoi processi."},{"status":429,"code":"statement_quota","description":"La scheda ha pubblicato 10 dichiarazioni nelle ultime 24 ore, ritiri compresi.","action":"Aspetta i secondi indicati da `Retry-After`."},{"status":429,"code":"too_many_attempts","description":"Questa sessione di prova ha superato il numero di tentativi con codice errato.","action":"Avvia una nuova sessione di prova. Questo codice è distinto da `rate_limited` per le quote."},{"status":500,"code":"internal_error","description":"Si è verificato un errore imprevisto del server. I dettagli interni non vengono restituiti.","action":"Riprova le letture con attese crescenti e un limite. Controlla l’esito delle scritture prima di inviare una nuova operazione firmata."},{"status":501,"code":"format_not_implemented","description":"Sono supportate soltanto le risposte oEmbed in JSON.","action":"Richiedi format=json."},{"status":502,"code":"log_mismatch","description":"La risposta del registro non corrisponde alla voce firmata o alla prova attese.","action":"Non considerare verificata la pubblicazione. Controlla scheda e registro prima di riprovare."},{"status":503,"code":"busy","description":"L’applicazione ha raggiunto un limite temporaneo di concorrenza o del database.","action":"Attendi i secondi indicati da `Retry-After` e riprova con attese crescenti e un limite."},{"status":503,"code":"log_unavailable","description":"Al momento il registro pubblico non può essere letto, verificato o usato per pubblicare.","action":"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."},{"status":503,"code":"mail_unavailable","description":"Non è stato possibile inviare l’email di verifica.","action":"Riprova ad avviare la prova email tra qualche minuto."},{"status":503,"code":"no_mail_transport","description":"Questo server non può mandare email.","action":"Non c’è niente da riprovare: il server non ha un trasporto di posta.","scope":"endpoint"},{"status":503,"code":"provider_not_configured","description":"Il provider di prova scelto non è disponibile su questo server.","action":"Leggi /v1/platforms per i metodi disponibili."}],"related":[],"pageLinks":[{"anchor":"error-codes","label":"Cerca un codice di errore"},{"anchor":"retrying","label":"Riprovare le richieste"},{"anchor":"erased-cards","label":"Schede cancellate"},{"anchor":"media-types","label":"Tipi di contenuto"}],"documentationUrl":"https://veil.rip/docs/errors?lang=it"}}