L’API della chat di Veil
Leggi e scrivi nella chat di veil.rip/chat/ con la chiave di una scheda, e controlla chi ha firmato ogni messaggio.
La chat non è ancora aperta. Questa pagina descrive l’API che servirà a https://veil.rip/chat/api/, sulla stessa origine della rubrica, così un browser che tiene la chiave di dispositivo di una scheda è già dentro. L’utente della chat è la scheda: nome, immagine, badge e account verificati vengono dalla scheda, e la chat non scrive niente nel registro.
Firma una richiesta#
veil-chat:request:v1
POST /chat/api/servers
<exact UTF-8 JSON body with ts and nonce>
Manda la chiave di dispositivo della scheda in X-Veil-Key (hex) e la firma Ed25519 in X-Veil-Signature (base64). Il corpo porta ts, un’ora ISO 8601 UTC entro due minuti dall’orologio del server, e nonce, 16 o più byte casuali in base64url, usato una volta sola. Una GET o una DELETE mette ts e nonce nella query e firma un corpo vuoto. La chat controlla che la chiave sia una chiave di dispositivo attiva di una scheda con GET /v1/keys/{key}. I byte firmati finiscono con un a capo dopo il corpo, che non si manda (una GET firma un corpo vuoto e poi l’a capo): un blocco firma non finisce mai così, quindi nessuno passa per una richiesta.
Firma un messaggio#
veil-chat:message:v1
channel:<id>
<ts>
<nonce>
<text>Chi scrive firma ogni messaggio con la stessa chiave, per un canale, un thread o una bacheca. La chat conserva i byte firmati e la firma come arrivano e li serve con il messaggio, insieme a card e key. Per controllare un messaggio decodifica signedBytes dal base64, verifica la firma con key e controlla con GET /v1/keys/{key}/active-at?t=<secondi unix> che la chiave fosse una chiave attiva di quella scheda in quel momento. Un messaggio di una chiave revocata dopo si verifica ancora alla sua data.
Il riferimento#
Ogni endpoint, evento e codice d’errore della chat è in chat/docs/api-chat.md nei sorgenti di Veil: server, canali, ruoli con i bit dei permessi della vecchia chat, inviti, messaggi, menzioni, contatori dei non letti, thread, bacheche, la moderazione dello staff e il WebSocket a wss://veil.rip/chat/ws.