API referansı: mimari, alanlar ve durum kodları

Her işlemde ortak olan yapı taşları: istek akışı, ortak JSON alanları, şablon türleri, durum kodları, portlar ve payload şifreleme.

API Mimarisi

ÖzellikCallback APIRESTful API
BaşlatanCihaz / Biometric GatewaySunucunuz
YönCihaz → SunucunuzSunucunuz → Cihaz
GecikmeGerçek zamanlı (milisaniye)~15 saniye
TetikleyiciCihazda biyometrik olayKodunuzdan HTTP POST
RolünüzAl ve onaylaKomut gönder ve yanıtı sorgula/bekle
Yanıt gövdesi{"status":"done"}{"Status":"done","OperationID":"…","StatusCode":0}
Çevrimdışı davranışMotor tarafından önbelleğe alınır; sunucu tekrar çevrimiçi olduğunda iletilirMotor tarafından kuyruğa alınır; cihaz yeniden bağlandığında iletilir

Ortak Alanlar

Tüm istekler — hem Callback hem RESTful — bu üst düzey alanları paylaşır.

AuthTokenString. Belirli bir cihazdan gelen istekleri tanımlayan ve doğrulayan 32 karakterlik bir token. API Monitor portalında yapılandırılır. Gelen her callback'te doğrulayın.
OperationIDString. Bu işlem örneği için benzersiz bir tanımlayıcı (örn. "j95xfejt3vr1"). RESTful yanıtlar aynı OperationID'yi geri döndürür; böylece istekleri yanıtlarla eşleştirebilirsiniz.
TimeString. Olayın işlendiği zamanın UTC zaman damgası, YYYY-MM-DD HH:mm:ss GMT +0000 biçiminde. Payload içindeki cihaz yerel zaman damgaları farklı bir saat dilimi farkı kullanabilir.
stgid (sorgu parametresi)String. Service Tag ID — RESTful API çağrıları için hedef cihazı tanımlar. API Monitor hesabınızda bulunan uç noktaya URL sorgu parametresi olarak iletin: POST https://<your-endpoint>?stgid=YOUR_TAG_ID.

Şablon Türleri

Biyometrik ve kimlik bilgisi verileri bir Template dizisinde taşınır. Her öğede bir Type alanı bulunur:

Şablon Birleştirme Davranışı — Callback İşleyicileri İçin Önemli
Kullanıcı verisi cihazdan push edildiğinde (Callback işlemleri #3–#9), şablonlar birden fazla callback boyunca tek tek veya gruplar halinde gelebilir. Her callback kullanıcının tüm şablon setini içermez — yalnızca eklenen veya değişen şablonları taşır.

Sunucunuz gelen şablonları o kullanıcı için saklanan mevcut şablonlarla birleştirmelidir. Her şablon için benzersiz anahtar Type + Index'tir. Örneğin:
• Callback 1, Fingerprint Index 0 ile gelir → saklayın
• Callback 2, Face Index 0 + Card ile gelir → birleştirin, parmak izini ezmeyin
• Callback 3, Fingerprint Index 0 (yeni veri) ile gelir → Index 0'daki mevcut parmak izini güncelleyin
Bir callback'te asla tüm şablonları değiştirmeyin — her zaman Type + Index ile upsert yapın.
TürAçıklamaTemel ek alanlar
CardRFID / yakınlık kartı numarasıData (kart numarası string'i)
PasswordSayısal PINData (PIN string'i)
FingerprintParmak izi şablonu — Base64 kodlu ikili veriIndex (parmak indeksi 0–9), Size, Data
FaceYüz şablonu — Base64 kodlu JPEG veya ikili veriIndex, Size, Data
PalmAvuç içi damar şablonu — Base64 kodlu ikili veriIndex, Data
UserPhotoKullanıcı profil fotoğrafı — Base64 kodlu JPEGData

Yanıt Durum Kodları

RESTful API yanıtları sayısal bir StatusCode içerir. Callback API yanıtları, sonuçtan bağımsız olarak her zaman basit {"status":"done"} biçimini kullanır.

KodDurumAçıklama
0Başarılıİşlem başarıyla tamamlandı.
1Geçersiz İstek VerisiJSON gövdesi hatalı biçimlendirilmiş veya geçersiz değerler içeriyor.
2Geçersiz Service Tag IDstgid sorgu parametresi kayıtlı hiçbir cihazla eşleşmiyor.
3Geçersiz İstekİstek yapısı beklenen işlem biçimiyle eşleşmiyor.
4Geçersiz ŞifrelemePayload şifrelemesi (AES-256) çözülemedi. Şifreleme anahtarınızı kontrol edin.
5Cihaz ÇevrimdışıHedef cihaz şu anda Biometric Gateway'e bağlı değil.
6İşlem Zaman AşımıCihaz, komutu zaman aşımı süresi içinde onaylamadı.
7Geçersiz Auth Tokenİsteği içindeki AuthToken, cihazın yapılandırılmış token'ıyla eşleşmiyor.
8Kullanıcı Zaten MevcutCihazda zaten var olan bir UserID için Ekleme işlemi denendi.
9Kullanıcı BulunamadıBelirtilen UserID cihazda mevcut değil.
10Şablon HatasıBiyometrik şablon verisi bozuk veya desteklenmeyen bir biçimde.
11Cihaz Belleği DoluCihaz, azami kullanıcı veya şablon kapasitesine ulaştı.
13Geçersiz Güvenlik AnahtarıAPI Monitor'da yapılandırılan güvenlik anahtarı eşleşmiyor.
15Özellik Desteklenmiyorİstenen işlem bu cihaz modeli veya iletişim modu tarafından desteklenmiyor.
999Bilinmeyen HataBeklenmeyen bir hata oluştu. OperationID ile birlikte Cams destek ekibiyle iletişime geçin.

Desteklenen Portlar

Gerçek zamanlı devam bilgisini alabilmek için sunucunuzun, Cams Protocol Engine'in ulaşabileceği bir HTTP(S) uç noktası sunması gerekir.

PortProtokolKullanım
80HTTPÜretim. Callback URL'nizi 80 numaralı porta bağlayın. API Monitor'da yapılandırılır ve okutmalarda otomatik çağrılır.
443HTTPSÜretim (güvenli). Geçerli SSL sertifikalı HTTPS. Üretim için önerilir.
8123HTTPYalnızca test. Geliştirme sırasında geçici olarak kullanılabilen standart dışı port.
HTTPS önerilir. Üretimde geçerli bir SSL sertifikasıyla HTTPS kullanın. Sunucuyu yeniden başlatmadan otomatik yenilemeyi sağlayın.

Örnek Veriler

38 işlemin tamamı için örnek istek ve yanıt payload'ları yukarıda her işlem bölümünde belgelenmiştir. Birleşik görünüm için:

Bu sayfaYukarıdaki her işlem bölümü, örnek verili ve kopyalamaya hazır istek ve yanıt JSON'u içerir.
Eski örnek sayfasıbiometric-web-api-sample-request-response.html — her işlem için açılır liste seçici.

Şifreleme

Cams Protocol Engine ile sunucunuz arasında değiştirilen tüm veriler için isteğe bağlı AES-256 şifreleme etkinleştirilebilir.

AlgoritmaECB modunda ve PKCS5 dolgusuyla AES-256 (AES/ECB/PKCS5PADDING).
Anahtar yapılandırmasıAnahtarınızı API Monitor'da Güvenlik Anahtarı olarak ayarlayın. Yapılandırıldığında tüm ham JSON payload'ları şifrelenir.
KodlamaŞifreli payload'lar güvenli HTTP aktarımı için Base64 kodludur.

Java Örneği

Şifrele / Çöz (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");
Önemli: Şifreleme etkinleştirildiğinde, gelen Callback payload'larının şifresini çözün ve giden RESTful istek gövdelerini aynı anahtarla şifreleyin.