drawing

T5-ABIS Developer Guide

Version 1.8
This document is intended for technical developer who will integrate T5-ABIS. It describes the API along with interface and packet structure to be used by the clients communicating with the Tech5 T5-ABIS Server.

Disclaimers

The information contained in this document is the proprietary and exclusive property of Tech5 except as otherwise indicated. No part of this document, in whole or in part, may be reproduced, stored, transmitted, or used for design purposes without the prior written permission from Tech5.

The information contained in this document is subject to change without notice. The information in this document is provided for informational purposes only. Tech5 specifically disclaims all warranties, express or limited, including, but not limited, to the implied warranty of merchant-ability and fitness for a particular purpose, except as provided for in a separate software license agreement.

Privacy Information

This document may contain information of a sensitive nature. This information should not be given to individuals other than those who are involved in the T5-ABIS development or integration.

Contact : support@tech5-sa.com

1. Overview

1.1 Introduction

This document discusses the interface, request/response structures and error codes to be used by the clients communicating with the T5-ABIS using Restful web service.

2. Client Interface

2.1 Overview

This Section explains the various urls and associated request and response structures that the client builds to communicate with T5-ABIS. All the communication will be in JSON.

Following are the two Restful ABIS API URLs

Overview of Transaction types (Process Requests) and typical sequence

ClientClientSDKABIS MasterABIS TCABIS Matcher1. Images2. TemplatesTemplates created using SDK can beused for enrollment& identification in ABIS1. CreateTemplate (Images)2. CreateTemplate3. Templates4. Return Templates5. Enroll(Images/Templates)If images are sent for enrollment, master creates templates using TC6. Insert Templates7. Insert in memory & cache8. Response(Identify (Images/ Templates)9. Enroll Response10. Identify (Images/Templates)If images are sent for identification, master creates templates using TC11. Search Templates12. Search in memory13. Candidate List14. Search Response15. Delete(ID)16. Delete Templates17. Delete from cache & memory18. Confirm Delete19. Delete ResponseClientClientSDKABIS MasterABIS TCABIS Matcher

2. Client Interface

2.1 Overview

This Section explains the various urls and associated request and response structures that the client builds to communicate with T5-ABIS. All the communication will be in JSON.

Following are the two Restful ABIS API URLs

2.2 Restful ABIS API URLs

2.2.1 Get System Status URL

This API is for getting all necessary information about the deployed T5-ABIS system.

URL: http://testapi.tech5.tech:8080/T5CloudService/1.0/getStatus
Method: GET
Produces: Application/JSON

Sample Get Status response structure:

 {
  "LicenseStatus" : {
    "Name" : "Tech5  ABIS GRID v2.0.4 {Face: IrishCream 1.3, Finger: 2.1, Iris: 1.1} ",
    "TotalNodes" : 7,
    "Master" : [ {
      "Mode" : "Master",
      "Hostname" : "ip-172-31-1-168.us-east-2.compute.internal",
      "Status" : "Ready"
    } ],
    "Slaves" : {
      "Face" : [ {
        "Mode" : "Slave",
        "Hostname" : "ip-172-31-1-168.us-east-2.compute.internal",
        "Modality" : "FACE",
        "Status" : "Ready",
        "Current DB Size" : "3483",
        "DB License" : "Unlimited",
        "Set" : "1"
      }, {
        "Mode" : "Slave_Stateless",
        "Hostname" : "ip-172-31-1-168.us-east-2.compute.internal",
        "Modality" : "FACE",
        "Status" : "Ready"
      } ],
      "Finger" : [ {
        "Mode" : "Slave_Stateless",
        "Hostname" : "ip-172-31-1-168.us-east-2.compute.internal",
        "Modality" : "FINGER",
        "Status" : "Ready"
      }, {
        "Mode" : "Slave",
        "Hostname" : "ip-172-31-1-168.us-east-2.compute.internal",
        "Modality" : "FINGER",
        "Status" : "Ready",
        "Current DB Size" : "3401",
        "DB License" : "Unlimited",
        "Set" : "1"
      } ],
      "Iris" : [ {
        "Mode" : "Slave_Stateless",
        "Hostname" : "ip-172-31-1-168.us-east-2.compute.internal",
        "Modality" : "IRIS",
        "Status" : "Ready"
      }, {
        "Mode" : "Slave",
        "Hostname" : "ip-172-31-1-168.us-east-2.compute.internal",
        "Modality" : "IRIS",
        "Status" : "Ready",
        "Current DB Size" : "3416",
        "DB License" : "Unlimited",
        "Set" : "1"
      } ]
    }
  }
}

The response provides details about the status of all the T5-ABIS nodes as follows:

  1. Total Nodes: Shows how many nodes have successfully joined the grid.
  2. Master: Shows the IP address and status of the master node
  3. Slaves: There are two types of slaves for each biometric modality:
    3.1. Slave_Stateless: Template creators are stateless nodes. The structure shows the status of the node, IP address and modality.
    3.2. Slave: These are stateful matcher nodes which load the records for identification. The structure shows the IP address, status, modality, DB license capacity, current DB size (no of records enrolled so far) and Set number (part of the gallery when gallery is split on multiple servers).

2.2.2 Process Request URL

All the functional/operations requests are handled by this URL. T5-ABIS will perform respective operation based on the request type (defined in #2.3 Request Types) passed in the request structure.

URL: http://testapi.tech5.tech:8080/T5CloudService/1.0/processRequest
Method: POST
Consumes: Application/JSON
Produces: Application/JSON

2.3 Request Types

Request are case sensitive so should be used exactly as shown below.

  1. Template Creation: “request_type”: “CreateTemplates”
    Stateless service for creating templates from biometric images which can be used for enrollment, identification and verification. Any available template creator node is used for this.
  2. Enroll Record: “request_type”: “Enroll”
    Enroll Record (insert record) with a unique identifier and corresponding templates into the matcher gallery which then becomes part of the searchable gallery ( database). The master will add the record to the all servers in a set available and open for enrollment.
  3. Identify Record: “request_type”: “Identification”
    Perform identification (1 to N) search on the enrolled gallery and return results based on matching scores in ascending order which are above the threshold in list with max length limited based on parameters passed during request. The master will send the request to any one available matcher in a set and finally combine results for different sets to for a consolidated candidate list.
  4. Delete Record: “request_type”: “Delete”
    Delete a record from all the matcher instances with the matching encounter ID sent in the request.

Data structures for biometric modalities :

public class FaceData implements Serializable {
    private String pos;   	  ///holds face position - F - frontal
    private String data;      ///holds face image dada as base64 encoded string
    private String template;  ///holds face template data as base64 encoded string
    private Double quality;   ///holds quality of face image
    private FaceCoordinates faceCords;  ////holds face coordinates in image
    }

public class FaceCoordinates {
	public int X;
	public int Y;
	public int Width;
	public int Height;
    }

public class IrisData implements Serializable {
    private String pos;       ///holds iris image position 1- right iris 2- left iris
    private String data;      ///holds image data in jp2 format as base64 encoded string
    private String template;  ///holds template data as base64 encoded string
    private Double quality;   ///holds quality of iris image 
    private Double blur;      ///holds blurness of iris image
    private Double occlusion; ///holds occlusion value of iris
}

public class PlainFingers implements Serializable {
    private String pos;    	  ///holds finger position 1-10 
    private String data;      ///holds finger image data, c be wsq or bmp
    private String template;  ///holds template data
    private Double quality;   ///holds quality of finger image 
}

public class RolledFingers implements Serializable {
    private String pos;       ///holds finger position 1-10 
    private String data;      ///holds finger image data, c be wsq or bmp
    private String template;  ///holds template data
    private Double quality;   ///holds quality of finger image 
}

2.4 Process Request and Response Structures

This section defines the structure for the request and responses sent as part of the processRequest. Following sections describes each request type and the JSON structure description for each.

2.4.1 Template Creation

This request is to create/extract biometric templates used for enrollment, identification and verification. Master send the request to any available stateless T5-ABIS template creators.

Note Template created using compatible client SDK can also be used instead of using T5-ABIS template creators.

2.4.1.1 CreateTemplate Request Structure

Following is the create template request structure is JSON format specifying the biometric data, request type and transaction information.

Sample CreateTemplate request JSON structure:

{  
    "tid": "196c690e-b91a-42dc-a953-1f5431d4ad5d",
    "request_type": "CreateTemplates",
    "finger_data": {
		  "live_scan_plain": [
	      {
		        "pos": "7",
		        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgABCvkz0z"
	      },

	      {
		        "pos": "10",
		        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgABCvkz0z"
	      },
	      {
		        "pos": "8",
		        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgABCvkz0z"
	      },
	      {
		        "pos": "9",
		        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgABCvkz0z"
	      },
	      {
		        "pos": "6",
		        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgABCvkz0z"
	      },
	      {
		        "pos": "2",
		        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgABCvkz0z"
	      },
	      {
		        "pos": "5",
		        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgABCvkz0z"
	      },
	      {
		        "pos": "3",
		        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgABCvkz0z"
	      },
	      {
		        "pos": "4",
		        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgABCvkz0z"
	      },
	      {
		        "pos": "1",
		        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgABCvkz0z"
	      }],
	      "live_scan_rolled": null
	  },
	   "iris_data": [
		    {
			      "pos": "2",
			      "data": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAyaAAAABZpaGRyAAAB"
		    },
		    {
			      "pos": "1",
			      "data": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAyaAAAABZpaGRyAAA"
		    }],
	   "face_data": [
		    {
			      "pos": "F",
			      "data": "/9j/4AAQSkZJRgABAgAAAQABAAD//gA4SW50ZWwoUikgSVBQIEpQRUcgZW5jb2RlciB"
		    }]  
}

Following structure should be used if data is not available for respective modality

"finger_data": {
    "live_scan_plain": [],
    "live_scan_rolled": null
	 },
"iris_data": [],
"face_data":[],

JSON sample for passing face coordinates, if sent ABIS will skip face detection and use those cordinates as face. If not sent ABIS perform face detection

"face_data": [{
	"pos": "F",
	"data": "/9j/4AAQSkZJRgABAgAAAQABAAD//gA4SW50ZWwoUikgSVBQIEpQRUcgZW5j",
	"faceCords": {
		"X": 50,
		"Y": 50,
		"Width": 250,
		"Height": 300
	}
}],

JSON structure description

2.4.1.2 CreateTemplate Response Structure

Following is the create template response structure in JSON format received from ABIS along with templates and quality information.

Sample CreateTemplate response JSON structure:

{
	    "tid": "196c690e-b91a-42dc-a953-1f5431d4ad5d",
	    "encounter_id": null,
	    "error": null,
	    "response": "true",
	    "request_type": "CreateTemplates",
	    "faceThreshold": 0.0,
		"fingerThreshold": 0.0,
		"irisThreshold": 0.0,
	    "maxResults": 0,
	    "errorCode": null,
	    "finger_data": {
	        "live_scan_plain": [
		            {
		                "pos": "10",
		                "data": null,
		                "template": "RQQAAAEAAAAAAAAeABJHAAAAAAAAMAQAAEkK9AH0AUckEEYAFBQRD5",
		                "quality": 71
		            },
		            {
		                "pos": "8",
		                "data": null,
		                "template": "aAYAAAEAAAAAAAAwACZEAAAAAAAAUwYAAEkI9AH0AUQkEEYAFBQRFP",
		                "quality": 68
		            },
		            {
		                "pos": "2",
		                "data": null,
		                "template": "IAUAAAEAAAAAAAAkAB5RAAAAAAAACwUAAEkC9AH0AVEmBEYAFBQRD7",
		                "quality": 81
		            },
		            {
		                "pos": "5",
		                "data": null,
		                "template": "PQUAAAEAAAAAAAAkABxLAAAAAAAAKAUAAEkF9AH0AUsoBEYAFBQRDr",
		                "quality": 75
		            },
		            {
		                "pos": "7",
		                "data": null,
		                "template": "mwQAAAEAAAAAAAAjABlCAAAAAAAAhgQAAEkH9AH0AUImEEYAFBQRFL",
		                "quality": 66
		            },
		            {
		                "pos": "9",
		                "data": null,
		                "template": "cQYAAAEAAAAAAAAyACJCAAAAAAAAXAYAAEkJ9AH0AUInEEYAFBQRFA",
		                "quality": 66
		            },
		            {
		                "pos": "6",
		                "data": null,
		                "template": "fwgAAAEAAAAAAAA+ADBMAAAAAAAAaggAAEkG9AH0AUwgEEYAFBQRD0I",
		                "quality": 76
		            },
		            {
		                "pos": "1",
		                "data": null,
		                "template": "KwwAAAEAAAAAAABQAEJSAAAAAAAAFgwAAEkB9AH0AVIhBEYAFBQRFZ4",
		                "quality": 82
		            },
		            {
		                "pos": "3",
		                "data": null,
		                "template": "TQcAAAEAAAAAAAAzACdUAAAAAAAAOAcAAEkD9AH0AVQpBEYAFBQRFBA",
		                "quality": 84
		            },
		            {
		                "pos": "4",
		                "data": null,
		                "template": "/QcAAAEAAAAAAAA6ACxGAAAAAAAA6AcAAEkE9AH0AUYmQEYAFBQRGSYB",
		                "quality": 70
		            }
		        ],
		        "live_scan_rolled": []
			    },
	     "iris_data": [
			        {
			            "pos": "1",
			            "data": null,
			            "template": "GWlnaMyZT8OB/M3PPJNTfm5+z4//+/37/f//yXn///v//////////////////",
			            "quality": 0,
			            "blur": 28.39884,
			            "occlusion": 0
			        },
			        {
			            "pos": "2",
			            "data": null,
			            "template": "zH+E2ZgPx3aypMeeGHucuPebeb959q//7//6n////b3//////////////////",
			            "quality": 0,
			            "blur": 28.686947,
			            "occlusion": 0
			        }],
	    "face_data": [
	        {
	            "pos": "F",
	            "data": null,
	            "template": "+s7srwABAAE69kzBNWGOR71BQJi9OIU32bpIDH5aO3XQu7qBKm0OpJ7XZ355g",
	            "quality": 24.087938
	        }]
}

JSON structure description

Note: Images sent for template creation are discarded by T5-ABIS.

2.4.2 Enrollment

This request is used for enrolling or adding records into the matcher gallery. The records will be added to the all the available matcher servers in the open set. The enrolled record is then available for identification in subsequent transactions.

2.4.2.1 Enrollment Request Structure

Following is the enrollment request structure is JSON format specifying the biometric data, request type and transaction information.

Sample Enroll request JSON structure using template:

{
	    "tid": "4d85c764-a2b1-431e-80fb-0ffd3b608c43",
	    "encounter_id": "109595833595891",
	    "request_type": "Enroll",
		"finger_data": {
			    "live_scan_plain": [
			      {
				        "pos": "5",
				        "template": "mwQAAAEAAAAAAAAjABlCAAAAAAAAhgQAAEkH9AH0AUImEEYAFB"
			      },
			      {
				        "pos": "9",
				        "template": "RQQAAAEAAAAAAAAeABJHAAAAAAAAMAQAAEkK9AH0AUckEEYAFB"
			      },
			      {
				        "pos": "2",
				        "template": "aAYAAAEAAAAAAAAwACZEAAAAAAAAUwYAAEkI9AH0AUQkEEYAFB"
			      },
			      {
				        "pos": "3",
				        "template": "cQYAAAEAAAAAAAAyACJCAAAAAAAAXAYAAEkJ9AH0AUInEEYAFB"
			      },
			      {
				        "pos": "7",
				        "template": "fwgAAAEAAAAAAAA+ADBMAAAAAAAAaggAAEkG9AH0AUwgEEYAFB"
			      },
			      {
				        "pos": "6",
				        "template": "IAUAAAEAAAAAAAAkAB5RAAAAAAAACwUAAEkC9AH0AVEmBEYAFB"
			      },
			      {
				        "pos": "10",
				        "template": "PQUAAAEAAAAAAAAkABxLAAAAAAAAKAUAAEkF9AH0AUsoBEYAFB"
			      },
			      {
				        "pos": "8",
				        "template": "TQcAAAEAAAAAAAAzACdUAAAAAAAAOAcAAEkD9AH0AVQpBEYAFB"
			      },
			      {
				        "pos": "4",
				        "template": "/QcAAAEAAAAAAAA6ACxGAAAAAAAA6AcAAEkE9AH0AUYmQEYAFB"
			      },
			      {
				        "pos": "1",
				        "template": "KwwAAAEAAAAAAABQAEJSAAAAAAAAFgwAAEkB9AH0AVIhBEYAFB"
			      }
			    ],
			    "live_scan_rolled": null
			  },
		  "iris_data": [
			    {
				      "pos": "1",
				      "template": "zH+E2ZgPx3aypMeeGHucuPebeb959q//7//6n////b3/////////"
			    },
			    {
				      "pos": "2",
				      "template": "GWlnaMyZT8OB/M3PPJNTfm5+z4//+/37/f//yXn///v/////////"
			    }],
		  "face_data": [
			    {
				      "pos": "F",
				      "template": "+s7srwABAAE69kzBNWGOR71BQJi9OIU32bpIDH5aO3XQu7qBKm0Op"
			    }]		
}

Sample Enroll request JSON structure using image:

{
	    "tid": "98d85c42-a2b1-431e-80fb-0ffd3b897c43",
	    "encounter_id": "109595833595892",	  
		"finger_data": {
			    "live_scan_plain": [
			      {
				        "pos": "5",
				        "data": "mwQAAAEAAAAAAAAjABlCAAAAAAAAhgQAAEkH9AH0AUImEEYAFB"
			      },
			      {
				        "pos": "9",
				        "data": "RQQAAAEAAAAAAAAeABJHAAAAAAAAMAQAAEkK9AH0AUckEEYAFB"
			      },
			      {
				        "pos": "2",
				        "data": "aAYAAAEAAAAAAAAwACZEAAAAAAAAUwYAAEkI9AH0AUQkEEYAFB"
			      },
			      {
				        "pos": "3",
				        "data": "cQYAAAEAAAAAAAAyACJCAAAAAAAAXAYAAEkJ9AH0AUInEEYAFB"
			      },
			      {
				        "pos": "7",
				        "data": "fwgAAAEAAAAAAAA+ADBMAAAAAAAAaggAAEkG9AH0AUwgEEYAFB"
			      },
			      {
				        "pos": "6",
				        "data": "IAUAAAEAAAAAAAAkAB5RAAAAAAAACwUAAEkC9AH0AVEmBEYAFB"
			      },
			      {
				        "pos": "10",
				        "data": "PQUAAAEAAAAAAAAkABxLAAAAAAAAKAUAAEkF9AH0AUsoBEYAFB"
			      },
			      {
				        "pos": "8",
				        "data": "TQcAAAEAAAAAAAAzACdUAAAAAAAAOAcAAEkD9AH0AVQpBEYAFB"
			      },
			      {
				        "pos": "4",
				        "data": "/QcAAAEAAAAAAAA6ACxGAAAAAAAA6AcAAEkE9AH0AUYmQEYAFB"
			      },
			      {
				        "pos": "1",
				        "data": "KwwAAAEAAAAAAABQAEJSAAAAAAAAFgwAAEkB9AH0AVIhBEYAFB"
			      }
			    ],
			    "live_scan_rolled": null
			  },
	   "iris_data": [
			    {
				      "pos": "1",
				      "data": "zH+E2ZgPx3aypMeeGHucuPebeb959q//7//6n////b3/////////"
			    },
			    {
				      "pos": "2",
				      "data": "GWlnaMyZT8OB/M3PPJNTfm5+z4//+/37/f//yXn///v/////////"
			    }],
	  "face_data": [
			    {
				      "pos": "F",
				      "data": "+s7srwABAAE69kzBNWGOR71BQJi9OIU32bpIDH5aO3XQu7qBKm0Op"
			    }]
}

JSON structure description

Note: Qif quality can be set to 0 if not available.</fois not availant

2.4.2.2 Enrollment Response Structure

Following is response structure in JSON format. Images OR can be sent for enrollment. If images are sent, the response sent back from T5-ABIS will contain the templates in the template field. If templates are sent the template field will be set to null.

Sample Enroll response JSON structure if templates are sent:

{
    "tid": "4d85c764-a2b1-431e-80fb-0ffd3b608c43",
    "encounter_id": "109595833595891",
    "error": null,
    "response": "true",
    "finger_data": null,
	"iris_data": null,
	"face_data": null,
    "request_type": "Enroll",
    "faceThreshold": 0.0,
	"fingerThreshold": 0.0,
	"irisThreshold": 0.0
}

Sample Enroll response JSON structure if images are sent:
Note: template data sent back which can be stored in DB for backup purposes.

{
    "tid": "98d85c42-a2b1-431e-80fb-0ffd3b897c43",
    "encounter_id": "109595833595892",
    "error": null,
    "response": "true",
    "finger_data": {
        "live_scan_plain": [
            {
                "pos": "10",
                "data": null,
                "template": "RQQAAAEAAAAAAAAeABJHAAAAAAAAAMAQAAEkK9AH0AEYAFBQRD5",
                "quality": 71
            },
            {
                "pos": "9",
                "data": null,
                "template": "cQYAAAEAAAAAAAAyACJCAAAAAAAAXAYAAEkJ9AH0AUInEEYAFBQRFA",
                "quality": 66
            },
            {
                "pos": "5",
                "data": null,
                "template": "PQUAAAEAAAAAAAAkABxLAAAAAAAAAKAUAAEkF9AH0AUsoBEYAFBQRDr",
                "quality": 75
            },
            {
                "pos": "3",
                "data": null,
                "template": "IAkTQcAAAEAAAAAAAAzACdUAAAAAAAAOAcAAEkD9AH0AVQpBEYAFBQRF	BA",
                "quality": 84
        },
            {
                "pos": "2",
                "data": null,
                "template": "IAUAAAEAAAAAAAAkAB5RAAAAAAAACwUAAEkC9AH0AEmBEYAFBQRD70",
                "quality": 81
            },
            {
                "pos": "7",
                "data": null,
                "template": "mwQAAAEAAAAAAAAjABlCAAAAAAAAhgQAAEkH9AH0AUImEEYAFBQRFLgA",
                "quality": 66
            },
            {
                "pos": "8",
                "data": null,
                "template": "NwcaAYAAAEAAAAAAAAwACZEAAAAAAAAUwYAAEkI9AH0AUQkEEYAFBQRFPoA",
                "quality": 68
            },
            {
                "pos": "4",               
                 "data": null,
                "template": PQo/QcAAAEAAAAAAABNADNCA6ACxGAAAAAAAA6AcAAEkE9AH0AUYmQEYAFB",
                "quality": 70
            },
            {
                "pos": "6",
                "data": null,
                "template": "fwgAAAEAAAAAAAA+ADBMAAAAAAAAaggAAEkG9AH0AUwgEEYAFBQRD0IBAA",
                "quality": 76
            },
            {
                "pos": "1",
                "data": null,
                "template": "QA8KwwAAAEAAAAAAABsQAEpFJSAAAAAAAAKw8FgwAAEkB9AH0AVIhBEYAFBQRFZ4BAQ",
                "quality": 82
            }
        ],
        "live_scan_rolled": []
    },
    "iris_data": [{			
        {
            "pos": "2",
            "data": null,
            "template": "zH+E2ZgPx3aypMeeGHucuPebeb959q//7//6n////b3/////////////////////",
            "quality": 0,
            "blur": 28.686947,
            "occlusion": 0
        },
        {
            "pos": "1",
            "data": null,
            "template": "GWlnaMyZT8OB/M3PPJNTfm5+z4//+/37/f//yXn///v/////////////////////O",
            "quality": 0,
            "blur": 28.39884,
            "occlusion": 0
        }],
    "face_data": [
        {
            "pos": "F",
            "data": null,
            "template": "+s7srwABAAE69kzBNWGOR71BQJi9OIU32bpIDH5aO3XQu7qBKm0OpJ7XZ355gNwpfv",
            "quality": 24.087938
        }
    ],
    "request_type": "Enroll",
    "faceThreshold": 0.0,
	"fingerThreshold": 0.0,
	"irisThreshold": 0.0,
    "maxResults": 0,
    "errorCode": null
}

JSON structure description

2.4.3 Identification

This request is used for performing a search using images OR templates on the all records enrolled in a single gallery. ABIS will return the list of matching candidate with scores in ascending order.

2.4.3.1 Identification Request Structure

The Request structure is JSON format specifying the biometric data, request type and transaction information for the identification request.

Sample Identification request JSON structure using template:

 {  
    "tid": "644ef1b1-3ba0-4165-bb8d-87834e31d39a",
    "request_type": "Identification",
    "faceThreshold": 6.0,
	"fingerThreshold": 0.85,
	"irisThreshold": 0.52,
    "maxResults": 10,
    "finger_data": {
    "live_scan_plain": [
	    	      {
	    		        "pos": "7",
	    		        "template": "mwQAAAEAAAAAAAAjABlCAAAAAAAAhgQAAEkH9AH0AUImEEYAFB"
	    	      },
	    	      {
	    		        "pos": "10",        
	    		        "template": "RQQAAAEAAAAAAAAeABJHAAAAAAAAMAQAAEkK9AH0AUckEEYAFB"
	    	      },
	    	      {
	    		        "pos": "8",        
	    		        "template": "aAYAAAEAAAAAAAAwACZEAAAAAAAAUwYAAEkI9AH0AUQkEEYAFB"
	    	      },
	    	      {
	    		        "pos": "9",     
	    		        "template": "cQYAAAEAAAAAAAAyACJCAAAAAAAAXAYAAEkJ9AH0AUInEEYAFB"
	    	      },
	    	      {
	    		        "pos": "6",        
	    		        "template": "fwgAAAEAAAAAAAA+ADBMAAAAAAAAaggAAEkG9AH0AUwgEEYAFB"
	    	      },
	    	      {
	    		        "pos": "2",     
	    		        "template": "IAUAAAEAAAAAAAAkAB5RAAAAAAAACwUAAEkC9AH0AVEmBEYAFB"
	    	      },
	    	      {
	    		        "pos": "5",        
	    		        "template": "PQUAAAEAAAAAAAAkABxLAAAAAAAAKAUAAEkF9AH0AUsoBEYAFB"
	    	      },
	    	      {
	    		        "pos": "3",        
	    		        "template": "TQcAAAEAAAAAAAAzACdUAAAAAAAAOAcAAEkD9AH0AVQpBEYAFB"
	    	      },
	    	      {
	    		        "pos": "4",       
	    		        "template": "/QcAAAEAAAAAAAA6ACxGAAAAAAAA6AcAAEkE9AH0AUYmQEYAFB"
	    	      },
	    	      {
	    		        "pos": "1",       
	    		        "template": "KwwAAAEAAAAAAABQAEJSAAAAAAAAFgwAAEkB9AH0AVIhBEYAFB"
	    	      }
                   ],
        "live_scan_rolled": null
      },
        "iris_data": [
    		    {
    		      "pos": "1",      
    		      "template": "zH+E2ZgPx3aypMeeGHucuPebeb959q//7//6n////b3//////////"      
    		    },
    		    {
    		      "pos": "2",      
    		      "template": "GWlnaMyZT8OB/M3PPJNTfm5+z4//+/37/f//yXn///v///////////"
    		    }],
        "face_data": [
		        {
		          "pos": "F",      
		          "template": "+s7srwABAAE69kzBNWGOR71BQJi9OIU32bpIDH5aO3XQu7qBKm0OpJ"
	            }]
}

Sample Identification request JSON structure using image:

  {
      "tid": "4efd5d71-52c7-42a8-a70c-101e8c850cfe",
      "request_type": "Identification",
      "faceThreshold": 6.0,
	  "fingerThreshold": 0.85,
      "irisThreshold": 0.52,
      "maxResults": 10,
      "finger_data": {
      "live_scan_plain": [
		      {
			        "pos": "7",
			        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMAC"
		      },
		      {
			        "pos": "10",
			        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMAC"
		      },
		      {
			        "pos": "8",
			        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMAC"
		      },
		      {
			        "pos": "9",
			        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMAC"
		      },
		      {
			        "pos": "6",
			        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMAC"
		      },
		      {
			        "pos": "2",
			        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMAC"
		      },
		      {
			        "pos": "5",
			        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMAC"
		      },
		      {
			        "pos": "3",
			        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMAC"
		      },
		      {
			        "pos": "4",
			        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMAC"
		      },
		      {
			        "pos": "1",
			        "data": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMAC"
		      }
	        ],
	         "live_scan_rolled": null
	      },
     "iris_data": [
		    {
			      "pos": "2",
			      "data": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAyaAA"
		    },
		    {
			      "pos": "1",
			      "data": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAyaAA"
		    }],
     "face_data": [
		    {
			      "pos": "F",
			      "data": "/9j/4AAQSkZJRgABAgAAAQABAAD//gA4SW50ZWwoUikgSVBQIEpQRUc"
		    }]
}

JSON structure description

Note: If the threshold fields are not passed, ABIS will assume 0.0 and process the request.

2.4.3.2 Identification Response Structure

Following is identification response structure in JON format. It will have the list of candidates with scores in ascending order on if the scores are above the threshold passed in request. The list will be limited to max results count sent in the request.

Sample Identification response JSON structure if template OR image data was sent:

    {
            "tid": "644ef1b1-3ba0-4165-bb8d-87834e31d39a",
            "encounter_id": null,
            "error": null,
            "response": "{\"finger\":{\"FINGER_T5\":{\"3171022704510001\":1.0,\"9595833595\":0.15,\"109595833595891\":0.12},
                          \"face\":{\"FACE_T5\":{\"9595833595\":20.0,\"109595833595891\":5.6.0,\"1204101208821001\":1.290419578552246},
        		          \"iris\":{\"IRIS_T5\":{\"3171022704510001\":1.0,\"9595833595\":0.32,\"109595833595891\":0.12},
            "finger_data": null,
            "iris_data": null,
            "face_data": null,
            "request_type": "Identification",
            "faceThreshold": 0.0,
			"fingerThreshold": 0.0,
			"irisThreshold": 0.0,
            "maxResults": 10,
            "errorCode": null
    }

JSON structure description

2.4.4 Delete

This request is used to remove the intended record from the ABIS matcher gallery. After successful execution the record will no be searchable.

2.4.4.1 Delete Request Structure

The Request structure is Json format specifying request type and transaction information.

Sample Delete request Json structure:

  {
    "tid":"1552260399757",
	"encounter_id":"3573012412970002",
	"request_type":"Delete"     
  }

JSON structure description

2.4.4.2 Delete Response Structure

Following is the delete response structure returned by T5-ABIS.

Sample Delete response Json structure:

{
    "tid": "1552260399757",
    "encounter_id": "3573012412970002",
    "error": null,
    "response": "true",
    "finger_data": null,
    "iris_data": null,
    "face_data": null,
    "request_type": "Delete",
    "faceThreshold": 0.0,
	"fingerThreshold": 0.0,
	"irisThreshold": 0.0,
    "maxResults": 0,
    "errorCode": null
}

JSON structure description

3. ERROR CODES

Following are the error code definitions:

Error Code Error Message
1001 T5-ABIS Grid Initialization Error
1002 No Face Nodes Found
1003 No Finger Nodes Found
1004 No Iris Nodes Found
1005 Unknown request type
1006 Grid SDK Error
1007 Base64 Decode Error
1008 Network Error
2001 SDK Initialization Error
2002 SDK Shutdown Error
2003 Face Template Creation Error
2004 Finger Template Creation Error
2005 Iris Template Creation Error
2006 Face Search Error
2007 Face Enroll Error
2008 Face Verification Error
2009 No Face Data for Record
2010 Finger Search Error
2011 Finger Enroll Error
2012 Finger Verification Error
2013 No Finger Data for Record
2014 Iris Search Error
2015 Iris Enroll Error
2016 Iris Verification Error
2017 No Iris Data for Record
2018 Delete Error
2019 T5ABIS SDK Crash
2020 T5ABIS SDK Count Error
2021 Get Status Error
2022 Duplicate Record Error