مرجع API: البنية والحقول ورموز الحالة

اللبنات المشتركة بين جميع العمليات: تدفق الطلبات، وحقول JSON المشتركة، وأنواع القوالب، ورموز الحالة، والمنافذ، وتشفير البيانات.

بنية API

الخاصيةواجهة Callbackواجهة RESTful
المبادرالجهاز / Biometric Gatewayخادمك
الاتجاهمن الجهاز إلى خادمكمن خادمك إلى الجهاز
زمن الاستجابةلحظي (بالميلي ثانية)~15 ثانية
المُحفِّزحدث بيومتري على الجهازطلب HTTP POST من الكود الخاص بك
دوركالاستقبال والتأكيدإرسال الأمر وانتظار/استطلاع الاستجابة
جسم الاستجابة{"status":"done"}{"Status":"done","OperationID":"…","StatusCode":0}
السلوك عند انقطاع الاتصاليخزّنها المحرك مؤقتًا وتُسلَّم عند عودة الخادم للعمليضعها المحرك في طابور وتُسلَّم عند إعادة اتصال الجهاز

الحقول المشتركة

تشترك جميع الطلبات — Callback وRESTful — في هذه الحقول ذات المستوى الأعلى.

AuthTokenسلسلة نصية. رمز من 32 حرفًا يعرّف الطلبات الواردة من جهاز معيّن ويصادق عليها. يُضبط في بوابة API Monitor. تحقق منه في كل Callback وارد.
OperationIDسلسلة نصية. معرّف فريد لهذه العملية (مثل "j95xfejt3vr1"). تعيد استجابات RESTful قيمة OperationID نفسها لتتمكن من مطابقة الطلبات مع الاستجابات.
Timeسلسلة نصية. الطابع الزمني UTC لوقت معالجة الحدث، بصيغة YYYY-MM-DD HH:mm:ss GMT +0000. قد تستخدم الطوابع الزمنية المحلية للجهاز داخل البيانات فارق توقيت مختلفًا.
stgid (معامل استعلام)سلسلة نصية. Service Tag ID — يحدد الجهاز المستهدف في استدعاءات RESTful. مرّره كمعامل استعلام في عنوان URL إلى النقطة الموجودة في حساب API Monitor: POST https://<your-endpoint>?stgid=YOUR_TAG_ID.

أنواع القوالب

تُنقل البيانات البيومترية وبيانات الاعتماد ضمن مصفوفة Template. لكل عنصر حقل Type:

سلوك دمج القوالب — مهم لمعالجات Callback
عند دفع بيانات المستخدم من الجهاز (عمليات Callback رقم 3–9)، قد تصل القوالب واحدًا تلو الآخر أو في مجموعات عبر عدة استدعاءات. لا يحتوي كل استدعاء على المجموعة الكاملة لقوالب المستخدم — بل القوالب التي أُضيفت أو تغيّرت فقط.

يجب أن يدمج خادمك القوالب الواردة مع القوالب المخزّنة لذلك المستخدم. المفتاح الفريد لكل قالب هو Type + Index. على سبيل المثال:
• يصل الاستدعاء 1 مع Fingerprint Index 0 → خزّنه
• يصل الاستدعاء 2 مع Face Index 0 + Card → ادمج، ولا تستبدل البصمة
• يصل الاستدعاء 3 مع Fingerprint Index 0 (بيانات جديدة) → حدّث البصمة الموجودة عند Index 0
لا تستبدل جميع القوالب عند أي Callback — نفّذ دائمًا upsert حسب Type + Index.
النوعالوصفأهم الحقول الإضافية
Cardرقم بطاقة RFID / القربData (سلسلة رقم البطاقة)
Passwordرمز PIN رقميData (سلسلة PIN)
Fingerprintقالب البصمة — بيانات ثنائية مرمّزة بـ Base64Index (رقم الإصبع 0–9)، Size، Data
Faceقالب الوجه — JPEG أو بيانات ثنائية مرمّزة بـ Base64Index, Size, Data
Palmقالب وريد راحة اليد — بيانات ثنائية مرمّزة بـ Base64Index, Data
UserPhotoصورة الملف الشخصي للمستخدم — JPEG مرمّز بـ Base64Data

رموز حالة الاستجابة

تتضمن استجابات RESTful قيمة رقمية StatusCode. تستخدم استجابات Callback دائمًا الصيغة البسيطة {"status":"done"} أيًا كانت النتيجة.

الرمزالحالةالوصف
0نجاحاكتملت العملية بنجاح.
1بيانات الطلب غير صالحةجسم JSON مشوّه أو يحتوي على قيم غير صالحة.
2Service Tag ID غير صالحلا يطابق معامل الاستعلام stgid أي جهاز مسجّل.
3طلب غير صالحبنية الطلب لا تطابق صيغة العملية المتوقعة.
4تشفير غير صالحتعذّر فك تشفير البيانات (AES-256). تحقق من مفتاح التشفير لديك.
5الجهاز غير متصلالجهاز المستهدف غير متصل حاليًا بـ Biometric Gateway.
6انتهاء مهلة العمليةلم يؤكد الجهاز استلام الأمر خلال مهلة الانتظار.
7رمز مصادقة غير صالحلا يطابق AuthToken في الطلب الرمزَ المضبوط للجهاز.
8المستخدم موجود مسبقًاجرت محاولة عملية إضافة لـ UserID موجود بالفعل على الجهاز.
9المستخدم غير موجودUserID المحدد غير موجود على الجهاز.
10خطأ في القالببيانات القالب البيومتري تالفة أو بصيغة غير مدعومة.
11ذاكرة الجهاز ممتلئةبلغ الجهاز الحد الأقصى لسعته من المستخدمين أو القوالب.
13مفتاح أمان غير صالحمفتاح الأمان المضبوط في API Monitor لا يتطابق.
15الميزة غير مدعومةالعملية المطلوبة غير مدعومة في طراز هذا الجهاز أو وضع الاتصال.
999خطأ غير معروفحدث خطأ غير متوقع. تواصل مع دعم Cams مع ذكر OperationID.

المنافذ المدعومة

لاستقبال معلومات الحضور لحظيًا، يجب أن يوفّر خادمك نقطة HTTP(S) يمكن لـ Cams Protocol Engine الوصول إليها.

المنفذالبروتوكولالاستخدام
80HTTPالإنتاج. اربط Callback URL بالمنفذ 80. يُضبط في API Monitor ويُستدعى تلقائيًا عند كل بصمة.
443HTTPSالإنتاج (آمن). HTTPS مع شهادة SSL صالحة. موصى به للإنتاج.
8123HTTPللاختبار فقط. منفذ غير قياسي متاح مؤقتًا أثناء التطوير.
يُوصى بـ HTTPS. استخدم HTTPS مع شهادة SSL صالحة في الإنتاج. تأكد من التجديد التلقائي دون إعادة تشغيل الخادم.

بيانات نموذجية

نماذج طلبات واستجابات جميع العمليات الـ38 موثّقة أعلاه في قسم كل عملية. لعرض موحّد:

هذه الصفحةيتضمن كل قسم عملية أعلاه JSON للطلب والاستجابة جاهزًا للنسخ مع بيانات نموذجية.
صفحة النماذج القديمةbiometric-web-api-sample-request-response.html — قائمة منسدلة لاختيار كل عملية.

التشفير

يمكن تفعيل تشفير AES-256 الاختياري لجميع البيانات المتبادلة بين Cams Protocol Engine وخادمك.

الخوارزميةAES-256 بوضع ECB مع حشو PKCS5 (AES/ECB/PKCS5PADDING).
إعداد المفتاحاضبط مفتاحك كـ Security Key في API Monitor. عند ضبطه، تُشفَّر جميع بيانات JSON الخام.
الترميزتُرمَّز البيانات المشفّرة بـ Base64 لنقل آمن عبر HTTP.

مثال Java

التشفير / فك التشفير (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");
مهم: عند تفعيل التشفير، فُكّ تشفير بيانات Callback الواردة وشفّر أجسام طلبات RESTful الصادرة باستخدام المفتاح نفسه.