{"revision":"0ed62d2c742f8e20","language":"it","entry":{"id":"oauth-callback","kind":"endpoint","group":"manage","title":"Ritorna da un provider OAuth","method":"GET","path":"/v1/links/callback/{platform}","paths":[],"summary":"Ricevi il ritorno dall’app Discord o GitHub configurata su Veil.","response":"Una pagina di ritorno che completa il flusso nel browser che lo ha iniziato. La sola callback non pubblica un collegamento.","parameters":[{"name":"platform","description":"discord o github, scelto all’inizio del flusso.","in":"path","required":true},{"name":"code, state","description":"Parametri forniti dal provider OAuth. Mantienili privati.","in":"query","required":false}],"sample":"/v1/links/callback/github","access":"provider-callback","base":"directory","notes":[],"errors":["400 invalid_parameter","404 not_found","409 callback_used","410 proof_expired","422 proof_failed","429 rate_limited","500 internal_error","503 busy","503 provider_not_configured"],"related":[],"sections":[{"kind":"code","language":"shell","code":"curl -fsS 'https://veil.rip/v1/links/callback/github'"}],"live":false,"responses":[{"status":200,"contentType":"text/html","description":"Una pagina di ritorno che completa il flusso nel browser che lo ha iniziato. La sola callback non pubblica un collegamento.","fields":[]}],"responseObjects":[],"errorFormat":"html","errorDetails":[{"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.","scope":"endpoint"},{"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.","scope":"endpoint"},{"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.","scope":"endpoint"},{"status":410,"code":"proof_expired","description":"La sessione temporanea di prova dell’account è scaduta.","action":"Avvia una nuova sessione di collegamento.","scope":"endpoint"},{"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.","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"},{"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.","scope":"endpoint"}],"responseHeaders":[{"name":"Content-Type","value":"text/html","description":"Usa il tipo dichiarato per scegliere come leggere il corpo."},{"name":"Date","value":"HTTP date","description":"Ora del server. Confrontala con il tuo orologio per firmare le richieste."},{"name":"Cache-Control","value":"no-store","description":"Non conservare le risposte private o temporanee in una cache condivisa."},{"name":"Retry-After","value":"integer seconds, on rate_limited or busy","description":"Attendi almeno questo intervallo prima di riprovare. Altri codici 429/503 non lo includono necessariamente."}],"documentationUrl":"https://veil.rip/docs/oauth-callback?lang=it","supportsBrowserFetch":false,"browserMode":"local-or-server"}}