{"revision":"0ed62d2c742f8e20","language":"it","entry":{"id":"contact-file","kind":"endpoint","group":"share","title":"Salva una scheda come contatto","method":"GET","path":"/u/{card}.vcf","paths":[],"summary":"Scarica la scheda di una persona come vCard per il telefono o la posta: il nome, l’indirizzo della scheda, gli account verificati e le 12 parole.","response":"Una vCard 4.0 (text/vcard): FN e N con il nome della scheda, UID e URL con l’indirizzo permanente (e l’alias), EMAIL per ogni email verificata, URL per ogni account GitHub, Discord, dominio e Fediverso verificato, PHOTO con l’immagine del profilo (un piccolo PNG nel file, o un GIF per indirizzo), NOTE con l’impronta di 12 parole e dove controllarla, REV e SOURCE.","parameters":[{"name":"card","description":"Il numero permanente della scheda di una persona o il suo alias corrente.","in":"path","required":true},{"name":"lang","description":"en oppure it: le parole della nota e la lista delle parole dell’impronta. La lingua predefinita è l’inglese.","in":"query","required":false}],"sample":"/u/1.vcf","access":"public","base":"directory","notes":["Il file è la parola del server, fatto dagli stessi dati delle anteprime della scheda. La sua nota lo dice, e nomina la scheda dove il controllo si fa nel browser di chi legge.","Solo per una scheda che si mostra com’è: mai per una sospesa, chiusa o rimossa, o il cui nome lo staff di Veil ha nascosto. Le organizzazioni non hanno un file di contatto.","Nessuna piattaforma che la rubrica collega oggi ha un indirizzo di messaggistica standard, quindi il file non ha righe IMPP: Discord, GitHub, un dominio e il Fediverso sono URL di profilo."],"errors":["401 invalid_api_key","403 api_key_scope","403 api_key_suspended","403 developer_suspended","404 not_found","410 erased","429 rate_limited","500 internal_error","503 busy"],"related":["person-card","card-image","external-keys-file","sharing"],"sections":[{"kind":"code","language":"shell","code":"curl -fsS -o veil-1.vcf 'https://veil.rip/u/1.vcf'"}],"verify":"Prima di fidarti di un contatto salvato per qualcosa che conta, apri la scheda che nomina e confronta le 12 parole con quelle della nota: la scheda controlla le sue chiavi nel tuo browser, il file no.","live":false,"responses":[{"status":200,"contentType":"text/vcard","description":"Una vCard 4.0 (text/vcard): FN e N con il nome della scheda, UID e URL con l’indirizzo permanente (e l’alias), EMAIL per ogni email verificata, URL per ogni account GitHub, Discord, dominio e Fediverso verificato, PHOTO con l’immagine del profilo (un piccolo PNG nel file, o un GIF per indirizzo), NOTE con l’impronta di 12 parole e dove controllarla, REV e SOURCE.","fields":[]}],"responseObjects":[],"errorFormat":"json","errorDetails":[{"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.","scope":"optional-api-key"},{"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.","scope":"optional-api-key"},{"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.","scope":"optional-api-key"},{"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.","scope":"optional-api-key"},{"status":404,"code":"not_found","description":"Nessuna scheda di persona ha questo numero o alias; oppure la scheda è di un’organizzazione, è sospesa, o lo staff di Veil ne ha nascosto il nome, quindi non ha un file di contatto.","action":"Apri la scheda per vederne lo stato. Il file di contatto torna quando la scheda si mostra di nuovo com’è.","scope":"endpoint"},{"status":410,"code":"erased","description":"La scheda è stata chiusa o rimossa, quindi non ha un file di contatto.","action":"Togli il contatto che ne avevi salvato, o segnalo come chiuso.","scope":"endpoint"},{"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.","scope":"common"},{"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.","scope":"common"},{"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.","scope":"common"}],"responseHeaders":[{"name":"Content-Type","value":"text/vcard; charset=utf-8","description":"Una vCard 4.0 in UTF-8, con gli a capo CRLF."},{"name":"Cache-Control","value":"no-cache","description":"Richiedilo ogni volta: una chiave tolta esce subito dal file."},{"name":"Content-Disposition","value":"attachment; filename=\"veil-<n>.vcf\"","description":"Si salva con il numero della scheda, mai con il nome."}],"documentationUrl":"https://veil.rip/docs/contact-file?lang=it","supportsBrowserFetch":true,"browserMode":"fetch"}}