{"revision":"9f11a31dd2951db0","language":"it","entry":{"id":"oidc-userinfo","kind":"endpoint","group":"oidc","title":"Leggi i dati della persona","method":"GET","path":"/oidc/userinfo","paths":[],"summary":"Gli stessi dati del token ID, dallo stato della scheda adesso: una chiave revocata, un subentro o una sospensione cambiano subito la risposta.","response":"I dati degli scope del token.","parameters":[],"sample":"/oidc/userinfo","access":"private-code","base":"directory","notes":["Gli errori di questo endpoint seguono OAuth: `{\"error\", \"error_description\"}` (RFC 6749, 5.2), non l'oggetto `error` del resto delle API. Un limite risponde comunque 429 con la busta solita.","Il token di accesso va in Authorization: Bearer. Un 401 porta WWW-Authenticate con l'errore.","Qui non si legge nessuna chiave API: un'intestazione Authorization su /oidc/ è la credenziale dell'app o della persona."],"errors":["401 invalid_request","401 invalid_token","401 veil_suspended","429 rate_limited","500 internal_error","503 busy"],"related":["sign-in-with-veil"],"sections":[{"kind":"code","language":"shell","code":"curl -fsS -H \"Authorization: Bearer $ACCESS_TOKEN\" 'https://veil.rip/oidc/userinfo'"}],"live":false,"responses":[{"status":200,"contentType":"application/json","description":"I dati degli scope del token.","fields":[{"name":"sub","type":"string","description":"Il numero della scheda, per tutta la sua vita."},{"name":"name, picture, preferred_username, profile","type":"string","description":"profile: il nome della scheda, l'URL dell'immagine, l'alias o u<n>, https://veil.rip/u/<n>."},{"name":"veil_version, veil_log, veil_good_standing, veil_standing_reasons","type":"mixed","description":"veil: la versione corrente, {origin, index, size, root}, lo stato ora e perché no (suspended, closing, takeover, name_hidden, key_revoked, key_banned)."},{"name":"veil_accounts","type":"array<object>","description":"veil:accounts: [{platform, id, handle, url, verified_at}]."},{"name":"veil_orgs","type":"array<object>","description":"veil:orgs: [{n, name, role}]."},{"name":"veil_keys","type":"object","description":"veil:keys: {devices: [{key, alg}], external: [{type, fp}]}."}]}],"responseObjects":[],"errorFormat":"json","errorDetails":[{"status":401,"code":"invalid_request","description":"Errore OAuth: manca il token di accesso in `Authorization: Bearer`.","action":"Manda il token di accesso nell'intestazione, mai nell'indirizzo.","scope":"endpoint"},{"status":401,"code":"invalid_token","description":"Errore OAuth: il token di accesso non è valido, è scaduto o revocato, oppure la scheda è stata chiusa.","action":"Rinnovalo, o fai accedere di nuovo la persona.","scope":"endpoint"},{"status":401,"code":"veil_suspended","description":"La scheda è sospesa dallo staff di Veil: userinfo non risponde per lei.","action":"Tratta la persona come uscita finché dura la sospensione. La scheda dice perché.","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":"application/json","description":"JSON, anche per gli errori."},{"name":"Cache-Control","value":"no-store","description":"Privata: mai in una cache."}],"documentationUrl":"https://veil.rip/docs/oidc-userinfo?lang=it","supportsBrowserFetch":false,"browserMode":"local-or-server"}}