Riferimento API: architettura, campi e codici di stato

Gli elementi comuni a tutte le operazioni: flusso delle richieste, campi JSON comuni, tipi di template, codici di stato, porte e crittografia dei payload.

Architettura dell’API

ProprietàAPI di callbackAPI RESTful
IniziatoreDispositivo / Biometric GatewayIl tuo server
DirezioneDispositivo → Il tuo serverIl tuo server → Dispositivo
LatenzaTempo reale (millisecondi)~15 secondi
TriggerEvento biometrico sul dispositivoHTTP POST dal tuo codice
Il tuo ruoloRicevere & confermareInviare il comando & interrogare/attendere la risposta
Corpo della risposta{"status":"done"}{"Status":"done","OperationID":"…","StatusCode":0}
Comportamento offlineMesso in cache dal motore; consegnato quando il server torna onlineMesso in coda dal motore; consegnato quando il dispositivo si riconnette

Campi comuni

Tutte le richieste — sia di callback sia RESTful — condividono questi campi di primo livello.

AuthTokenString. Token di 32 caratteri che identifica e autentica le richieste di un dispositivo specifico. Configurato nel portale API Monitor. Validalo a ogni callback in ingresso.
OperationIDString. Identificatore univoco di questa istanza di operazione (ad es. "j95xfejt3vr1"). Le risposte RESTful restituiscono lo stesso OperationID così puoi associare richieste e risposte.
TimeString. Timestamp UTC dell’elaborazione dell’evento, nel formato YYYY-MM-DD HH:mm:ss GMT +0000. I timestamp locali del dispositivo nel payload possono usare un fuso orario diverso.
stgid (parametro di query)String. Service Tag ID — identifica il dispositivo di destinazione per le chiamate API RESTful. Da passare come parametro di query nell’URL dell’endpoint disponibile nel tuo account API Monitor: POST https://<your-endpoint>?stgid=YOUR_TAG_ID.

Tipi di template

I dati biometrici e delle credenziali sono trasportati in un array Template. Ogni elemento ha un campo Type:

Comportamento di unione dei template — importante per i gestori di callback
Quando i dati utente vengono inviati dal dispositivo (operazioni di callback n. 3–9), i template possono arrivare uno alla volta o in gruppi, su più callback. Ogni callback non contiene l’intero set di template dell’utente — trasporta solo i template aggiunti o modificati.

Il tuo server deve unire i template in arrivo con quelli già salvati per quell’utente. La chiave univoca di ogni template è Type + Index. Ad esempio:
• Il callback 1 arriva con Fingerprint Index 0 → salvalo
• Il callback 2 arriva con Face Index 0 + Card → unisci, non sovrascrivere l’impronta
• Il callback 3 arriva con Fingerprint Index 0 (nuovi dati) → aggiorna l’impronta esistente all’Index 0
Non sostituire mai tutti i template in un callback — esegui sempre un upsert per Type + Index.
TypeDescrizioneCampi aggiuntivi principali
CardNumero del badge RFID / di prossimitàData (stringa del numero del badge)
PasswordPIN numericoData (stringa del PIN)
FingerprintTemplate di impronta digitale — binario codificato Base64Index (indice del dito 0–9), Size, Data
FaceTemplate del volto — JPEG o binario codificato Base64Index, Size, Data
PalmTemplate delle vene del palmo — binario codificato Base64Index, Data
UserPhotoFoto del profilo utente — JPEG codificato Base64Data

Codici di stato della risposta

Le risposte delle API RESTful includono uno StatusCode numerico. Le risposte delle API di callback usano sempre la forma semplice {"status":"done"}, indipendentemente dall’esito.

CodiceStatoDescrizione
0SuccessoOperazione completata con successo.
1Dati della richiesta non validiIl corpo JSON è malformato o contiene valori non validi.
2Service Tag ID non validoIl parametro di query stgid non corrisponde ad alcun dispositivo registrato.
3Richiesta non validaLa struttura della richiesta non corrisponde al formato di operazione previsto.
4Crittografia non validaNon è stato possibile decifrare il payload crittografato (AES-256). Controlla la tua chiave di crittografia.
5Dispositivo offlineIl dispositivo di destinazione non è attualmente connesso alla Biometric Gateway.
6Timeout dell’operazioneIl dispositivo non ha confermato il comando entro il tempo limite.
7Token di autenticazione non validoL’AuthToken nella richiesta non corrisponde al token configurato per il dispositivo.
8Utente già esistenteÈ stata tentata un’operazione di aggiunta per un UserID già presente sul dispositivo.
9Utente non trovatoL’UserID specificato non esiste sul dispositivo.
10Errore del templateI dati del template biometrico sono corrotti o in un formato non supportato.
11Memoria del dispositivo pienaIl dispositivo ha raggiunto la capacità massima di utenti o template.
13Chiave di sicurezza non validaLa chiave di sicurezza configurata nell’API Monitor non corrisponde.
15Funzionalità non supportataL’operazione richiesta non è supportata da questo modello di dispositivo o da questa modalità di comunicazione.
999Errore sconosciutoSi è verificato un errore imprevisto. Contatta il supporto Cams indicando l’OperationID.

Porte supportate

Per ricevere le informazioni di presenza in tempo reale, il tuo server deve esporre un endpoint HTTP(S) raggiungibile dal Cams Protocol Engine.

PortaProtocolloUtilizzo
80HTTPProduzione. Associa il tuo URL di callback alla porta 80. Configurato nell’API Monitor e chiamato automaticamente a ogni timbratura.
443HTTPSProduzione (sicuro). HTTPS con certificato SSL valido. Consigliato per la produzione.
8123HTTPSolo per test. Porta non standard disponibile temporaneamente durante lo sviluppo.
HTTPS consigliato. Usa HTTPS con un certificato SSL valido in produzione. Assicurati che il rinnovo automatico avvenga senza riavviare il server.

Dati di esempio

Esempi di payload di richiesta e risposta per tutte le 38 operazioni sono documentati sopra in ciascuna sezione di operazione. Per una vista consolidata:

Questa paginaOgni sezione di operazione sopra include JSON di richiesta e risposta pronti da copiare, con dati di esempio.
Pagina di esempi precedentebiometric-web-api-sample-request-response.html — selettore a tendina per ogni operazione.

Crittografia

È possibile attivare la crittografia AES-256 opzionale per tutti i dati scambiati tra il Cams Protocol Engine e il tuo server.

AlgoritmoAES-256 in modalità ECB con padding PKCS5 (AES/ECB/PKCS5PADDING).
Configurazione della chiaveImposta la tua chiave come Security Key nell’API Monitor. Una volta configurata, tutti i payload JSON grezzi vengono crittografati.
CodificaI payload crittografati sono codificati in Base64 per un trasporto HTTP sicuro.

Esempio Java

Cifratura / Decifratura (Java)
// Encryption
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
SecretKeySpec keySpec = new SecretKeySpec(securityKey.getBytes("UTF-8"), "AES");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
String encrypted = Base64.getEncoder().encodeToString(cipher.doFinal(rawJson.getBytes("UTF-8")));

// Decryption
cipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] decoded = Base64.getDecoder().decode(encryptedPayload);
String decrypted = new String(cipher.doFinal(decoded), "UTF-8");
Importante: quando la crittografia è attiva, decifra i payload di callback in ingresso e cifra i corpi delle richieste RESTful in uscita con la stessa chiave.