veil

Leggi l’attività privata delle chiavi API

Controlla le ricevute di gestione e le firme originali dei dispositivi.

GET/v1/developer/accounts/{n}/audit
Accesso
Richiesta firmata
Client
Client locale o server

Parametri#

NomePosizioneSignificato
nObbligatorioPercorsoNumero permanente della persona o organizzazione titolare della quota.
beforeQueryCursore esclusivo restituito in next. Omettilo per la pagina più recente.
limitQueryDa 1 a 100. Il valore predefinito è 50.

Manda le intestazioni comuni di firma, inclusi X-Nonce e X-Timestamp. Una GET firmata non ha corpo JSON. Firma delle richieste

Esempi di richiesta#

cURL
curl -fsS \
  -H "X-Public-Key: $PUBLIC_KEY" -H "X-Signature: $REQUEST_SIGNATURE" \
  -H "X-Nonce: $NONCE" -H "X-Timestamp: $TIMESTAMP" \
  "https://veil.rip/v1/developer/accounts/1/audit"

Risposta#

HTTP 200application/json

owner, events e next. Ogni evento contiene azione, scheda dell’autore, ora, motivo, dettagli e proof con metodo, percorso, corpo esatto, chiave pubblica, algoritmo e firma. Non contiene mai il segreto Bearer.

CampoTipoSignificato
ownerintegerNumero della scheda titolare.
eventsarray<AuditEvent>Ricevute dalla più recente.
nextinteger | nullPassalo come before per leggere le ricevute precedenti. Null indica la fine.

Esempio di risposta

Valori illustrativi. Leggi la risposta corrente della tua richiesta.

json
{
  "owner": 1,
  "events": [],
  "next": null
}

Apri un oggetto annidato per leggerne i campi. I tipi con null ammettono un valore null; i campi optional possono essere assenti. Gli altri campi sono presenti nell’oggetto.

Ricevuta privata di gestione AuditEvent
CampoTipoSignificato
idintegerCursore della ricevuta.
ownerintegerNumero permanente della scheda titolare.
keyIdstring | nullChiave interessata, oppure null per una modifica dell’account.
actorintegerScheda che ha firmato la richiesta di gestione.
actionstringAzione di gestione, per esempio create, revoke o account_limits.
reasonstringMotivo dello staff, oppure stringa vuota per un’azione del titolare.
detailsobjectMetadati dell’azione, inclusi i valori prima e dopo per i limiti. Non contiene il segreto Bearer.
proofobjectmethod, path, body, key pubblica, alg e signature esatti della richiesta firmata.
createdAtstringData e ora della ricevuta in ISO 8601 UTC.

Intestazioni della risposta#

IntestazioneValoreSignificato
Content-Typeapplication/jsonUsa il tipo dichiarato per scegliere come leggere il corpo.
DateHTTP dateOra del server. Confrontala con il tuo orologio per firmare le richieste.
Cache-Controlno-storeNon conservare le risposte private o temporanee in una cache condivisa.
Retry-Afterinteger seconds, on rate_limited or busyAttendi almeno questo intervallo prima di riprovare. Altri codici 429/503 non lo includono necessariamente.

Note d’uso#

  • Il titolare firma con una chiave di dispositivo attiva. Per l’organizzazione serve un proprietario con appartenenza accettata. Le chiavi API Bearer non autorizzano questa chiamata.
  • La risposta è privata e usa Cache-Control no-store.
  • Le scritture di gestione accettano al massimo 8 KiB e rifiutano i campi sconosciuti. nonce e timestamp sono i campi comuni della firma.

Errori#

Gli errori API restituiscono un oggetto error. Usa error.code nella logica del programma; error.message è un testo inglese per le persone e può cambiare. Guida a risposte ed errori

HTTPCodiceSignificato e cosa fare
400invalid_parameter

Un campo del percorso, della query o del corpo manca, è malformato o fuori intervallo.

Correggi il campo indicato in error.message prima di inviare di nuovo.

403identity_banned

La scheda che agisce è sospesa dallo staff di Veil.

Attendi la fine della restrizione o chiedi allo staff di riesaminarla.

403key_mismatch

La chiave di firma non è autorizzata per questa scheda o operazione.

Usa una chiave di dispositivo attiva con il ruolo di titolare o membro richiesto.

404not_found

La scheda, la chiave, l’alias, il codice o la risorsa richiesti non sono stati trovati.

Controlla l’identificatore. Codici e anteprime temporanei potrebbero essere scaduti o già usati.

Errori comuni delle richieste
HTTPCodiceSignificato e cosa fare
400invalid_nonce

Il nonce della richiesta firmata ha un formato errato.

Genera un nuovo nonce da 16 a 128 caratteri usando lettere, cifre, _ o -.

400invalid_signature_alg

X-Signature-Alg non è supportato.

Usa un algoritmo di firma supportato e la codifica corretta per chiave e firma.

400invalid_timestamp

Il timestamp della richiesta firmata non è espresso in millisecondi Unix.

Usa un timestamp Unix intero in millisecondi e firma la richiesta corretta.

401invalid_signature

La firma della richiesta HTTP non è valida.

Firma metodo, percorso e byte del corpo esatti, senza modificarli dopo.

401missing_signature

La richiesta richiede una firma del dispositivo e le intestazioni mancano o non sono leggibili.

Invia X-Public-Key, X-Signature e i metadati della richiesta firmata. Una chiave API non sostituisce la firma del dispositivo.

401stale_timestamp

Il timestamp firmato è fuori dalla finestra temporale ammessa.

Confronta l’intestazione Date del server con il tuo orologio, poi genera nuovi nonce, timestamp e firma.

403key_banned

La chiave del dispositivo che firma è sospesa dallo staff di Veil.

Usa una chiave attiva autorizzata o chiedi allo staff di riesaminare la restrizione.

409replayed_nonce

La chiave di firma ha già usato questo nonce.

Controlla se la richiesta precedente è riuscita prima di crearne una nuova firmata.

429rate_limited

È stato superato un limite anonimo, delle richieste firmate o della chiave API.

Attendi almeno i secondi indicati da Retry-After. Condividi coda e budget dei tentativi tra i tuoi processi.

500internal_error

Si è verificato un errore imprevisto del server. I dettagli interni non vengono restituiti.

Riprova le letture con attese crescenti e un limite. Controlla l’esito delle scritture prima di inviare una nuova operazione firmata.

503busy

L’applicazione ha raggiunto un limite temporaneo di concorrenza o del database.

Attendi i secondi indicati da Retry-After e riprova con attese crescenti e un limite.