drawing

T5-nxGen MBAP Developer Guide

Version 1.0.3.1
This document is intended for technical developers responsible for integrating T5-nxGen MBAP (Multi Biometric Authentication Platform). It describes the API along with interfaces and packet structures to be used by the clients communicating with the Tech5 Next Generation MBAP Server.

For older versions of MBAP, please click the below link and access Developer Guide:

  • http://wiki.tech5.tech/Tech5-nxGen-MBAPDeveloperGuide-v1.0.1.html
  • 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 shared with individuals or organizations other than those who are involved in the T5-nxGen MBAP development or integration.

    Contact : support@tech5-sa.com

    1. Overview

    1.1 Introduction

    This document discusses the api Interfaces and packet structures you can use in communicating with the T5-nxGen MBAP Restful web service for Authentication and Verification. Biometric data like face, finger, or iris must be sent along with unique ID to get verification results. Optionally T5-nxGen MBAP also facilitates biometric to biometric verifications, means it matches any two biometric images and returns the matching score between them.

    2. Client Interface

    This Section explains the request and response structures that the client builds to communicate with T5-nxGen MBAP Authentication platform. All communication with REST API will be in JSON format.

    Request URL, Request and Response structure

    T5-nxGen MBAP supports different types of API requests as described below:

    Note: All these API requests are case sensitive.

    Overview of Transaction types and typical sequence

    ClientClientSDKMBAP Master1. Images2. TemplatesTemplates created using SDK can beused for enrollment & verification in MBAP3. Enroll(Images/Templates)If images are sent for enrollment, master creates templates using TC4. Insert Templates in cache5. Enroll Response6. Authenticate ID (Images/Templates)If images are sent for identification, master creates templates using TC7. Retrieve gallery templates from DB8. Match probe and gallery templates9. Authentication Response10. Verify Biometrics (Images/Templates)If images are sent for identification, master creates templates using TC11. Match Templates12. Verification ResponseClientClientSDKMBAP Master

    Request Data structures for biometric modalities :

    Following data structures are common to the following request types. Data relevant to particular request should be prepared and sent.

    Request Structure

    Following data structure is used to create verification with UID request.

    Request structure description :

    Java Classes

        public class Request {
    
          private String transactionId;
          private String transactionSource;
          private String uid;
          private List<Finger> fingerData;
          private List<Iris> irisData;
          private Face faceData;
          private double faceThreshold;
          private double fingerThreshold;
          private double irisThreshold;
          private Boolean useFingerScaling;
    
        }
        public class Finger{
    
          private String pos;
          private String image;
          private String template;
          private Double quality;
    
        }
        public class Iris{
    
          private String pos;
          private String image;
          private String template;
          private Double quality;
          private Double blur;
    
        }
        public class Face{
    
          private String pos;
          private String image;
          private String template;
          private Double quality;
    
        }
    

    Sample Request JSON Structure

    Note: Please make a note that all the base 64 strings used in this sample JSONs were part of the actual strings but not complete strings, so these samples with partiall strings cannot be used for testing, replace them with complete strings for your testing

    {
      "transactionId": "c25d8d53-c7c4-49b6-a6f1-d799d8996ef2",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "6.0",
      "fingerThreshold": "6.0",
      "irisThreshold": "6.0",
      "useFingerScaling": false,
      "fingerData": [
        {
          "pos": "1",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC4..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "2",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC4..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "3",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC4..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "4",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC4..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "5",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC4..",
          "template": null,
          "quality": 0.0
        },        
        {
          "pos": "6",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC4..",
          "template": null,
          "quality": 0.0
        },    
        {
          "pos": "7",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC4..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "8",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC4..",
          "template": null,
          "quality": 0.0
        },   
        {
          "pos": "9",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC4..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "10",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM..",
          "template": null,
          "quality": 0.0
        }
      ],
      "irisData": [
        {
          "pos": "1",
          "image": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiA..",
          "template": null,
          "quality": 0.0,
          "blur": 0.0
        },
        {
          "pos": "2",
          "image": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiA..",
          "template": null,
          "quality": 0.0,
          "blur": 0.0
        }
      ],
      "faceData": {
        "pos": "F",
        "image": "/9j/4AAQSkZJRgABAgAAAQABAAD//gA9SW50ZWwoUikgS..",
        "template": null,
        "quality": 0.0
      }
    }
    

    Response Structure

    Upon successful execution, following response will be sent back to the client. Error code will be sent in case if there is an error (please refer to error codes table at the end).

    Sample Response JSON Structure

    {
      "enrollmentResult": true,
      "error": {
        "documentation": "",
        "errorCode": 2001,
        "errorMessage": "Face Enrollment Successfull"
      },
      "faceData": {},
      "faceThreshold": 0,
      "fingerThreshold": 0,
      "httpErrorMessage": "Face Enrollment Successfull",
      "httpResponseCode": 200,
      "irisThreshold": 0,
      "uid": "919595833595"
    }
    

    Exceptions

    T5-nxGen MBAP performs data validation checks on requests that are received and returns an exception response in case of missing, incomplete or incorrect data.

    Sample Exception JSON Structure

    {
      "errorCode": 6001,
      "errorMessage": "TransactionId cannot be empty; ",
      "documentation": "http://wiki.tech5.tech/Tech5-nxGen-MBAPDeveloperGuide.html",
      "UID": "1000000000000005",
      "transactionId": "",
      "transactionSource": "JUnit",
      "httpResponseCode": 400
    }
    

    Position Codes Table

    Position Code
    Face “F” Or “A”
    RIGHT_IRIS “1”
    LEFT_IRIS “2”
    RIGHT_THUMB “1”
    RIGHT_INDEX “2”
    RIGHT_MIDDLE “3”
    RIGHT_RING “4”
    RIGHT_LITTLE “5”
    LEFT_THUMB “6”
    LEFT_INDEX “7”
    LEFT_MIDDLE “8”
    LEFT_RING “9”
    LEFT_LITTLE “10”

    Enrollment Request

    This request type is used for enrolling records in T5-nxGen MBAP database which can then further be used for authentication using ID transaction types. MBAP will store the ID of the person and corresponding biometric templates in the database. For enrollment, either images or templates can be sent and the templates will be stored in the database and thus available for future authentication transactions.

    URL: http://xxx.xxx.xxx.xxxx:portnumber/MBAP/api/enroll
    Method: POST
    Consumes: Application/JSON
    Produces: Application/JSON
    Example: http://gn-testapi.tech5.tech:9090/MBAP/api/enroll

    Request

    Unique ID for the person and corresponding biometrics in the form of images or templates should be sent.

    Note: Base64 strings given in all sample jsons are partial strings and please make a note that those strings cannot be used, do replace these strings with full base64 strings for the biometric Images that you want to use.

    Full JSON for a sample record can be downloaded from here:

    Sample Enrollment JSON Request using images.

    Note: Tech5 templates can also be sent for enrollment instead of images

    {
      "transactionId": "c25d8d53-c7c4-49b6-a6f1-d799d8996ef2",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "6.0",
      "fingerThreshold": "6.0",
      "irisThreshold": "6.0",
      "useFingerScaling": false,
      "fingerData": [
        {
          "pos": "7",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC4..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "10",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC4..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "8",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC4..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "9",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "6",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "2",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44n..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "5",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44n..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "3",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44n..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "4",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZ..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "1",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM..",
          "template": null,
          "quality": 0.0
        }
      ],
      "irisData": [
        {
          "pos": "2",
          "image": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiA..",
          "template": null,
          "quality": 0.0,
          "blur": 0.0
        },
        {
          "pos": "1",
          "image": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiA..",
          "template": null,
          "quality": 0.0,
          "blur": 0.0
        }
      ],
      "faceData": {
        "pos": "F",
        "image": "/9j/4AAQSkZJRgABAgAAAQABAAD//gA9SW50ZWwoUikgS..",
        "template": null,
        "quality": 0.0
      }
    }
    

    Response

    Upon successful execution following response will be sent. Error code will be sent in case if there is an error (please refer to error codes table at the end).
    Sample JSON Response for enrollment request.

    {
      "enrollmentResult": true,
      "error": {
        "documentation": "http://wiki.tech5.tech/Tech5-nxGen-MBAPDeveloperGuide.html",
        "errorCode": 2001,
        "errorMessage": "Face Enrollment Successfull"
      },
      "faceData": {},
      "faceThreshold": 0,
      "fingerThreshold": 0,
      "httpErrorMessage": "Face Enrollment Successfull",
      "httpResponseCode": 200,
      "irisThreshold": 0,
      "uid": "919595833595"
    }
    

    Verification using UID

    This request type is used for verification using unique ID (mapped to civilian biometrics).
    In this request the user can send the ID of the person to be verified and associated biometrics (images or templates). T5-nxGen MBAP will compare the biometrics passed in the request with the biometrics stored in the DB corresponding to that ID. If the matching score is above the passed threshold value a true response will be sent. This serves as a central authentication system.

    URL: http://xxx.xxx.xxx.xxx:portnumber/MBAP/api/verificationWithId
    Method: POST
    Consumes: Application/JSON
    Produces: Application/JSON
    Example: http://gn-testapi.tech5.tech:9090/MBAP/api/verificationWithId

    Request

    Unique ID of the person and their biometrics in the form of images or templates whose biometrics have been enrolled.

    Sample JSON Authentication Request structure using Face Image:

    {
      "transactionId": "2156b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "6",
      "fingerThreshold": "0.0",
      "irisThreshold": "0.0",
      "useFingerScaling": false,
      "fingerData": [],
      "faceData": {
        "pos": "F",
        "image": "/9j/4AAQSkZJRgABAgEAAAAAAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQg..",
        "template": null,
        "quality": 0.0
      },
      "irisData": []
    }
    

    Sample JSON Authentication Request structure using Iris and Finger Image:

    Note: We can use all 10 Fingers Images/Templates & 2 Iris Images/Templates of each record or can be used few fingers and Iris like shown in example:

    {
      "transactionId": "2156b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "6",
      "fingerThreshold": "0.6",
      "irisThreshold": "0.5",
      "useFingerScaling": false,
      "fingerData": [
        {
          "pos": "7",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMA..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "10",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMA..",
          "template": null,
          "quality": 0.0
        }
      ],
      "irisData": [
        {
          "pos": "2",
          "image": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAya..",
          "template": null,
          "quality": 0.0,
          "blur": 0.0
        }
      ]
    }
    

    Sample JSON Authentication Request structure using Face and Finger Image:

    {
      "transactionId": "2156b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "6",
      "fingerThreshold": "0.6",
      "irisThreshold": "0.5",
      "useFingerScaling": false,
      "faceData": {
        "pos": "F",
        "image": "/9j/4AAQSkZJRgABAgEAAAAAAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQg..",
        "template": null,
        "quality": 0.0
      },
      "fingerData": [
        {
          "pos": "7",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMA..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "10",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMA..",
          "template": null,
          "quality": 0.0
        }
      ]
    }
    

    Sample JSON Authentication Request structure using Face and Iris templates:

    {
      "transactionId": "2156b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "6",
      "fingerThreshold": "0.6",
      "irisThreshold": "0.5",
      "useFingerScalin": false,
      "fingerData": [],
      "useFingerScaling": false,
      "faceData": {
        "pos": "F",
        "image": null,
        "template": "/9j/4AAQSkZJRgABAgEAAAAAAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQg..",
        "quality": 0.0
      },
      "irisData": [
        {
          "pos": "2",
          "image": null,
          "template": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAya..",
          "quality": 0.0,
          "blur": 0.0
        }
      ]
    }
    

    Sample JSON Authentication Request structure using Iris and Finger templates:

    {
      "transactionId": "2156b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "6",
      "fingerThreshold": "0.6",
      "irisThreshold": "0.5",
      "useFingerScalin": false,
      "fingerData": [
        {
          "pos": "7",
          "image": null,
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMA..",
          "quality": 0.0
        },
        {
          "pos": "10",
          "image": null,
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMA..",
          "quality": 0.0
        }
      ],
      "irisData": [
        {
          "pos": "2",
          "image": null,
          "template": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAya..",
          "quality": 0.0,
          "blur": 0.0
        }
      ]
    }
    

    Sample JSON Authentication Request structure using Face and Finger templates:

    {
      "transactionId": "2156b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "6",
      "fingerThreshold": "0.6",
      "irisThreshold": "0.5",
      "useFingerScalin": false,
      "faceData": {
        "pos": "F",
        "image": null,
        "template": "/9j/4AAQSkZJRgABAgEAAAAAAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQg..",
        "quality": 0.0
      },
      "fingerData": [
        {
          "pos": "7",
          "image": null,
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMA..",
          "quality": 0.0
        },
        {
          "pos": "10",
          "image": null,
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMA..",
          "quality": 0.0
        }
      ]
    }
    

    Response

    Response Data structures for biometric modalities & Response message:

    Java Classes

    public class RequestResponse
    {
      private MBAPError error;
      private int httpResponseCode;
      private String httpErrorMessage;
      private Boolean verificationResult;
      private String transactionId;
      private String transactionSource;
      private String matchScore;
      private String uid;
      private String uid;
      private String uid;
      private String uid;
      private String uid;
      private String uid;
      private String uid;
    }
    
    public class MBAPError {
    
      private int errorCode;
      private String errorMessage;
      private String documentation;
    
    }
    

    JSON structure description :

    **Sample JSON VerificationResponse

    {
      "httpResponseCode": 200,
      "matchScore": "20.0",
      "transactionId": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "verificationResult": true
    }
    

    Verification using UID on GPU (only for Face Modality)

    This request type is used for verification using ID on a GPU for faster Template extraction & response times. In this request the user can send the ID of the person to be verified and associated biometrics (image). T5-nxGen MBAP will compare the biometrics passed in the request with the biometrics stored in the DB corresponding to that ID. If the matching score is above the passed threshold a true response will be sent. This serves as a central authentication system. This call is Face biometric specific and must not be used with Finger or Iris biometrics.

    URL: http://xxx.xxx.xxx.xxx:portnumber/MBAP/api/verificationWithIdGPU
    Method: POST
    Consumes: Application/JSON
    Produces: Application/JSON
    Example: http://gn-testapi.tech5.tech:9090/MBAP/api/verificationWithIdGPU

    Request

    Unique ID of the person and their biometrics in the form of images or templates whose biometrics have been enrolled.

    Sample JSON Authentication Request structure using Face Image:

    {
      "transactionId": "2156b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "6",
      "fingerThreshold": "0.0",
      "irisThreshold": "0.0",
      "useFingerScaling": false,
      "fingerData": [],
      "faceData": {
        "pos": "F",
        "image": "/9j/4AAQSkZJRgABAgEAAAAAAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQg..",
        "template": null,
        "quality": 0.0
      },
      "irisData": []
    }
    

    Response

    Response Data structures for biometric modalities & Response message:

    Java Classes

    public class RequestResponse
    {
      private MBAPError error;
      private int httpResponseCode;
      private String httpErrorMessage;
      private Boolean verificationResult;
      private String transactionId;
      private String transactionSource;
      private String matchScore;
      private String uid;
      private String uid;
      private String uid;
      private String uid;
      private String uid;
      private String uid;
      private String uid;
    }
    
    public class MBAPError {
    
      private int errorCode;
      private String errorMessage;
      private String documentation;
    
    }
    

    JSON structure description :

    Sample JSON VerificationResponse

    {
      "httpResponseCode": 200,
      "matchScore": "20.0",
      "transactionId": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "verificationResult": true
    }
    

    Create Template

    Create Template call accepts biometric image(s) of finger, face and iris and creates corresponding biometric templates. MBAP provides three (3) different types of API calls to create single or multi-biometric templates in single request. The calls are :

    Create Template call accepts single or multiple biometric modalities and returns the corresponding templates based on the supplied image(s) of the modality.

    Create Template GPU call accepts only face biometric modality and uses MBAP GPU Servers to create templates for faster processing and reduced response times.

    Create Template GPU Batch call accepts a list of images up to a maximum range between 64 or 128 images depending on the kind of GPU card installed in MBAP Template Creators. The list will be processed in a single pass if within batchsize limits and the resulting templates are returned to the calling client. If the image list size exceeds the configured batch size in MBAP, the call will be rejected with an exception returned to the calling client.

    NOTE: Please note that in case of Finger biometrics, MBAP can create proprietary Tech5 templates or standard ISO templates as required. This behavior is configured as part of MBAP deployment.

    1. CreateTemplate

    The call structure of createTemplate is the same as the Request explained in the beginning of the document.

    URL: http://xxx.xxx.xxx.xxx:portnumber/MBAP/api/createTemplate
    Method: POST
    Example: http://gn-testapi.tech5.tech:9090/MBAP/api/createTemplate

    Multi-Biometrics

    Sample JSON CreateTemplate Face, Iris & Finger Request

    {
      "transactionId": "f5cfcf13-bff3-400a-9fb5-ced8a488fb98",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "6",
      "fingerThreshold": "0.6",
      "irisThreshold": "0.5",
      "fingerData": [
        {
          "pos": "7",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozM..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "10",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozM..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "8",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMA..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "9",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMA..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "6",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMAC..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "2",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "5",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "3",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "4",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "1",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/..",
          "template": null,
          "quality": 0.0
        }
      ],
      "irisData": [
        {
          "pos": "2",
          "image": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAyaAAAA..",
          "template": null,
          "quality": 0.0,
          "blur": 0.0
        },
        {
          "pos": "1",
          "image": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAyaAAAABZ..",
          "template": null,
          "quality": 0.0,
          "blur": 0.0
        }
      ],
      "faceData": {
        "pos": "F",
        "image": "/9j/4AAQSkZJRgABAgAAAQABAAD//gA9SW50ZWwoUikgSVBQIEpQRUcgZW5jb2..",
        "template": null,
        "quality": 0.0
      }
    }
    

    Sample JSON CreateTemplate Multi-Biometrics Response with the templates

    {
      "fingerData": [
        {
          "pos": "7",
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5..",
          "templateCreationResult": true
        },
        {
          "pos": "10",
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5..",
          "templateCreationResult": true
        },
        {
          "pos": "8",
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5o..",
          "templateCreationResult": true
        },
        {
          "pos": "9",
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5o..",
          "templateCreationResult": true
        },
        {
          "pos": "6",
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5o..",
          "templateCreationResult": true
        },
        {
          "pos": "2",
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozM..",
          "templateCreationResult": true
        },
        {
          "pos": "5",
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMA..",
          "templateCreationResult": true
        },
        {
          "pos": "3",
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMAC..",
          "quality": 0.0
        },
        {
          "pos": "4",
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS..",
          "templateCreationResult": true
        },
        {
          "pos": "1",
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7..",
          "templateCreationResult": true
        }
      ],
      "irisData": [
        {
          "pos": "2",
          "template": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAyaAA..",
          "templateCreationResult": true
        },
        {
          "pos": "1",
          "template": "AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAyaA..",
          "templateCreationResult": true
        }
      ],
      "faceData": {
        "pos": "F",
        "FVRdNfwkPXHYy+bfBytOOvk8H4sRSbpriVtN3rpgUj/..",
        "templateCreationResult": true
      },
      "httpResponseCode": 200,
      "transactionId": "f5cfcf13-bff3-400a-9fb5-ced8a488fb98",
      "transactionSource": "nxtGen MBAP TestTool",
      "uid": "919595833595"
    }
    

    Single Biometric

    Sample JSON CreateTemplate Face

    {
      "transactionId": "235d2b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "0",
      "fingerThreshold": "0",
      "irisThreshold": "0",
      "fingerData": [],
      "irisData": [],
      "faceData": {
        "pos": "F",
        "image": "/9j/4AAQSkZJRgABAgEAAAAAAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQ..",
        "template": null,
        "quality": 0.0
      }
    }
    

    Sample JSON CreateTemplate Face Response

    {
    	"faceData": {
    			"pos": "F",
    			"template": "+s7srwABAAHc5jU3fSlyHnt+EHtkR7gA05xzGMJhghg8R..",
    			"templateCreionResult": true
    		},
    		  	"httpResponseCode": 0,
    			"transactionId": "235d2b46-0b39-4f77-a715-1f69944035a4",
    		  	"transactionSource": "nxGen MBAP TestTool",
    		  	"uid": "919595833595"
    }
    

    Sample JSON Create Template Iris Request

    {
    "transactionId": "d2b46-0b39-4f77-a715-1f69944035a4",
    	"transactionSource": "nxGen MBAP TestTool",
    	"uid": "919595833595",
    "faceThreshold": "0",
    "fingerThreshold": "0",
    "irisThreshold": "0",
    "fingerData": [],
    "faceData": {},
    "irisData": [
        {
          "pos": "1",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgAB..",
          "template": null,
          "quality": 0.0,
          "blur": 0.0
        },
        {
          "pos": "2",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgAB..",
          "template": null,
          "quality": 0.0,
          "blur": 0.0
        }
      ]
    }
    

    Sample JSON Create Template Iris Response

    {
      "transactionId": "d2b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "0",
      "fingerThreshold": "0",
      "irisThreshold": "0",
      "fingerData": [],
      "faceData": {},
      "irisData": [
        {
          "pos": "1",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgAB..",
          "template": null,
          "quality": 0.0,
          "blur": 0.0
        },
        {
          "pos": "2",
          "mae": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgAB..",
          "template": null,
          "quality": 0.0,
          "blur": 0.0
        }
      ]
    }
    

    Sample JSON CreateTemplate Finger Request

    {
      "transactionId": "246-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "0",
      "fingerThreshold": "0",
      "irisThreshold": "0",
      "irisData": [],
      "faceData": {},
      "fingerData": [
        {
          "pos": "7",
          "ie": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgAB..",
          "template": null,
          "quality": 0.0
        },
        {
          "pos": "10",
          "image": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozMACS7/VgAB..",
          "template": null,
          "quality": 0.0
        }
      ]
    }
    

    Sample JSON CreateTemplate Finger Response

    {
      "fingerData": [
        {
          "pos": "7",
          "templatmae": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozM..",
          "templateCreationResult": true
        },
        {
          "pos": "10",
          "template": "/6D/pAA6CQcACTLTJc0ACuDzGZoBCkHv8ZoBC44nZM0AC+F5ozM..",
          "templateCreationResult": true
        }
      ],
      "httpResponseCode": ansactionId": "246-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxtGen MBAP TestTool",
      "uid": "919595833595"r": 00,
      "
    }
    

    2. CreateTemplateGPU

    The call structure of createTemplateGPU is the same as the Request explained in the beginning of the document.
    CreateTemplateGPU API call uses Face biometric images only and will ignore the biometric data for other modalities if present in the call.

    URL: http://xxx.xxx.xxx.xxx:portnumber/MBAP/api/createTemplateGPU
    Method: POST
    Example: http://gn-testapi.tech5.tech:9090/MBAP/api/createTemplateGPU

    Sample JSON CreateTemplate request with Face Imag

    {
      "transactionId": "235d2b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595",
      "faceThreshold": "0",
      "fingerThreshold": "0",
      "irisThreshold": "0",
      "fingerData": [],
      "irisData": [],
      "faceData": {
        "pos": "F",
        "image": "/9j/4AAQSkZJRgABAgEAAAAAAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQ..",
        "template": null,
        "quality": 0.0
      }
    }
    

    Sample JSON Response with the Face template:mae

    {
      "faceData": {
        "pos": "F",
        "template": "+s7srwABAAHc5jU3fSlyHnt+EHtkR7gA05xzGMJhghg8R..",
        "templateCreationResult": true
      },
      "httpResponseCode": 0,
      "transactionId": "235d2b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "uid": "919595833595"
    }
    

    3. CreateTemplateGPUBatch

    CreateTemplateGPUBatch API call uses Face biometric images only and will ignore the biometric data for other modalities if present in the call. The call accepts a list of images and returns the corresponding list of templates.

    URL: http://xxx.xxx.xxx.xxx:portnumber/MBAP/api/createTemplateGPUBatch
    Method: POST
    Example: http://gn-testapi.tech5.tech:9090/MBAP/api/createTemplateGPUBatch

    Request Structure

    Following data structure is used to create request for createTempateGPUBatch API call.

    JSON Request structure description :

    Java Classes

        public class Request {
    
          private String transactionId;
          private String transactionSource;
          private List<FaceTCGPUBatch> faceList;
    
        }
        
        public class FaceTCGPUBatch {
          private String uid;
          private String pos;
          private String image;
          private String template;
        
        }
    

    Sample JSON Request with the Face images

    {
      "faceData": [
        {
          "uid": "919595833595"
          "pos": "F",
          "image": "/9j/4AAQSkZJRgABAgEAAAAAAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQ..",
          "template" : null
        },
        {
          "uid": "919595833596"
          "pos": "F",
          "image": "/9j/4AAQSkZJRgABAgEAAAAAAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQ..",
          "template" : null
        },
        {
          "uid": "919595833597"
          "pos": "F",
          "image": "/9j/4AAQSkZJRgABAgEAAAAAAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQ..",
          "template" : null
        }
      ],
      "transactionId": "235d2b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool"
    }
    

    Sample Response JSON Structure

    {
      "transactionId": "235d2b46-0b39-4f77-a715-1f69944035a4",
      "transactionSource": "nxGen MBAP TestTool",
      "error": {
        "documentation": "",
        "errorCode": 2001,
        "errorMessage": "Face Enrollment Successfull"
      },
      "faceList": [
        {
          "uid": "919595833595",
          "pos": "F",
          "image": "",
          "template": "+s7srwABAAHc5jU3fSlyHnt+EHtkR7gA05xzGMJhghg8R..",
          "templateCreationResult": true
        },
        {
          "uid": "919595833596",
          "pos": "F",
          "image": "",
          "template": "+s7srwABAAHc5jU3fSlyHnt+EHtkR7gA05xzGMJhghg8R..",
          "templateCreationResult": true
        },
        {
          "uid": "919595833597",
          "pos": "F",
          "image": "",
          "template": "+s7srwABAAHc5jU3fSlyHnt+EHtkR7gA05xzGMJhghg8R..",
          "templateCreationResult": true
        }
      ],
    
      "httpResponseCode": 200,
      "httpErrorMessage": "OK"
    }
    

    Verification using biometrics

    This request type is used for matching two biometric sets passed in the request. This is a stateless service and does not depend on the database. If the matching score is above the passed threshold the system will respond with a verification result as true otherwise false. Matching is performed between probe and gallery data based on index positions e.g: index 0 to index 0, 1 to 1 and so on.

    VerifyBiometrics call has the following versions:

    verifyBiometrics and verifyBiometricsGPU has the same call structure as described below. The only difference is that verifyBiometrics GPU is used for FACE modality and takes advantage of MBAP GPU servers if installed. This speeds up request processing and reduces the response times.

    NOTE: verifyBiometricsGPU and verifyBiometricsGPUBatch calls will only process requests with images and not templates.

    1. VerifyBiometrics & VerifyBiometricsGPU

    URL: http://xxx.xxx.xxx.xxx:portnumber/MBAP/api/verifyBiometrics
    URL: http://xxx.xxx.xxx.xxx:portnumber/MBAP/api/verifyBiometricsGPU
    Method: POST
    Consumes: Application/JSON
    Produces: Application/JSON
    Example: http://gn-testapi.tech5.tech:9090/MBAP/api/verifyBiometrics
    Example: http://gn-testapi.tech5.tech:9090/MBAP/api/verifyBiometricsGPU

    Request Data structures for Verification using biometrics :
    Following data structures are common to most of the request types. Data relevant to particular request should be sent.

        public class Request {
          private String transactionId;
          private String transactionSource;
          private String uid;
          private List<Finger> probeFingerData;
          private List<Finger> galleryFingerData;
          private List<Iris> probeIrisData;
          private List<Iris> galleryIrisData;
          private Face probeFace;
          private Face galleryFace;
    
          private int needTemplates;
          private double faceThreshold;
          private double fingerThreshold;
          private double irisThreshold;
          private Boolean useFingerScaling;
        }
        public class Face{
          private String pos;
          private String image;
          private String template;
          private Double quality;
         }
    

    JSON Request structure description:

    Value description for needTemplates parameter

    Value Description
    0 No tempaltes are needed in response from the API
    1 Template is needed in response for Face image position F
    2 Both probe and gallery templates are needed in response from the API

    Request

    Sample JSON Face verification request using biometric images

    {
      "transactionId": "b3c350aa-2734-48d1-998d-7777777",
      "transactionSource": "MBAP Test Tool",
      "uid": "111122223333555555",
      "needTemplates": 2,
      "probeFace": {
        "pos": "F",
        "image": "/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQI...",
        "template": null,
        "quality": 0.0
      },
      "galleryFace": {
        "pos": "F",
        "image": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAgGBgcGBQg...",
        "template": null,
        "quality": 0.0
      },
      "probeFingerData": null,
      "galleryFingerData": null,
      "probeIrisData": null,
      "galleryIrisData": null,
      "faceThreshold": "6",
      "fingerThreshold": "6",
      "irisThreshold": "6"
    }
    

    2. VerifyBiometricsGPUBatch

    URL: http://xxx.xxx.xxx.xxx:portnumber/MBAP/api/verifyBiometricsGPUBatch
    Method: POST
    Consumes: Application/JSON
    Produces: Application/JSON
    Example: http://gn-testapi.tech5.tech:9090/MBAP/api/verifyBiometricsGPUBatch

    Request Data structures for Verification using biometrics :
    Following data structure is used to send request to verifyBiometricsGPUBatch endpoint. Data relevant to particular request should be sent.

        public class Request {
          private String transactionId;
          private String transactionSource;
          private List<Face> probeFaces;
          private List<Face> galleryFaces;
        }
        public class Finger{
          private String pos;
          private String image;
          private String template;
          private Double quality;
        }
        public class Iris{
          private String pos;
          private String image;
          private String template;
          private Double quality;
          private Double blur;
        }
        public class Face{
          private String pos;
          private String image;
          private String template;
          private Double quality;
         }
    

    Response Data structures for Verification using biometrics :

      public class ResponseBiometricsGPU 
        private String transactionId;
            private String transactionSource;
            private MBAPError error;
            private int httpResponseCode;
            private String httpResponseMessage;
    
            private List<Face> probFaces;
            private List<Face> galleryFaces;
            private List<Double> scores;
            private List<Double> percentScores;
        public class Face
            private String pos;
            private String image;
            private String template;
            private Double quality;
       }
      public class MBAPError 
      {
            private int errorCode;
            private String errorMessage;
            private String documentation;
      }
    

    JSON Request & Response structure description:

    Value description for needTemplates parameter
    | Value | Description |
    |—|---| Template is nee image position F|
    |Both probe and gale API |

    Request

    Sample JSON for list of Face (probe and gallery face lists) Face verification request using biometric images

    {
        "transactionId": "b3c350aa-2734-48d1-998d-7777777",
        "transactionSource": "MBAP Test Tool",
        "probeFaces": [
            {
                "pos": "F",
                "image": "/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQI...",
                "template": null,
                "quality": 0.0
            },
            {
                "pos": "F",
                "image": "/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQI...",
                "template": null,
                "quality": 0.0
            },
            {
                "pos": "F",
                "image": "/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQI...",
                "template": null,
                "quality": 0.0
            }
        ],
        "galleryFaces": [
            {
                "pos": "F",
                "image": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAgGBgcGBQg...",
                "template": null,
                "quality": 0.0
            },
            {
                "pos": "F",
                "image": "/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQI...",
                "template": null,
                "quality": 0.0
            },
            {
                "pos": "F",
                "image": "/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQI...",
                "template": null,
                "quality": 0.0
            }
        ]
    }
    

    Response

    {
      "galleryFaces": [
        {
          "template": "+s7srwABAALxea36Lt0ABMTMKLrecr6ktkXfeU8cdOBeVpDvIBiYrINZ2wh6F81se0KZVG0m..."
        },
        {
          "template": "+s7srwABAALxea36Lt0ABMTMKLrecr6ktkXfeU8cdOBeVpDvIBiYrINZ2wh6F81se0KZVG0m..."
        },    
        {
          "template": "+s7srwABAALxea36Lt0ABMTMKLrecr6ktkXfeU8cdOBeVpDvIBiYrINZ2wh6F81se0KZVG0m..."
        }
      ],
      "httpResponseCode": 0,
      "percentScores": [100.0, 100.0],
      "scores": [20.0, 20.0],
      "probFaces": [
        {
          "template": "+s7srwABAALxea36Lt0ABMTMKLrecr6ktkXfeU8cdOBeVpDvIBiYrINZ2wh6F81se0KZVG0m..."
        },
        {
          "template": "+s7srwABAALxea36Lt0ABMTMKLrecr6ktkXfeU8cdOBeVpDvIBiYrINZ2wh6F81se0KZVG0m..."
        },    
        {
          "template": "+s7srwABAALxea36Lt0ABMTMKLrecr6ktkXfeU8cdOBeVpDvIBiYrINZ2wh6F81se0KZVG0m..."
        }
      ],
    
      "transactionId": "07b055ec-dfb3-4413-af6f-5580564110bf",
      "transactionSource": "JUnit"
    }
    

    UIDStatus using UID

    This request type is used to check if a given UID exists in T5 nxGen MBAP cache against each of the three modalities. If a given UID exists in any modality, a “true” is returned for the corresponding modality or else a “false” is returned.

    URL: http://xxx.xxx.xxx.xxx:portnumber/MBAP/api/UIDStatus
    Method: POST
    Example: http://gn-testapi.tech5.tech:9090/MBAP/api/UIDStatus

    Request

    {
      "uid": "919595833595",
      "transactionId": "c25d8d53-c7c4-49b6-a6f1-d799d8996ejagd67",
      "transactionSource": "nxGen MBAP TestTool"
    }
    

    Response

    {
      "httpResponseCode": 200,
      "transactionId": "c25d8d53-c7c4-49b6-a6f1-d799d8996ejagd67",
      "uid": "919595833595",
      "face": true,
      "finger": false,
      "iris": false
    }
    

    Delete using UID

    This request type is used for deleting a given UID which exists in T5 nxGen MBAP cache against all three modalities based on input parameters.

    Deletion Request :

    URL: http://xxx.xxx.xxx.xxx:portnumber/MBAP/api/delete
    Method: POST
    Consumes: Application/JSON
    Produces: Application/JSON
    Example: http://gn-testapi.tech5.tech:9090/MBAP/api/delete

    Request structure description :

    Java Class

    public class DeleteRequest {
      private String uid;
      private String transactionId;
      private String transactionSource;
      private Boolean deleteFromFace;
      private Boolean deleteFromIris;
    }
    
    

    Sample JSON Deletion Request

    {
      "uid": "1000000000000005",
      "transactionId": "c25d8d53-c7c4-49b6-a6f1-d799d8996ef2",
      "transactionSource": "MBAP Test Tool",
      "deleteFromFace": false,
      "deleteFromFinger": false,
      "deleteFromIris": true
    }
    

    Deletion Response :

    Java Classes

    public class DeleteResponse {
    
        private String uid;
        private String transactionId;
        private String transactionSource;
        private Boolean deletedFromFace;
        private Boolean deletedFromFinger;
        private Boolean deletedFromIris;
        private MBAPError error;
        private int httpResponseCode;
        private String httpErrorMessage;
    }
    
    public class MBAPError {
        private int errorCode;
        private String errorMessage;
        private String documentation;
    }
    
    

    Sample JSON Authentication Response

    {
      "deletedFromFace": true,
      "httpResponseCode": 200,
      "transactionId": "Abcxxx-111-defgddd-45555",
      "transactionSource": "JMeter",
      "uid": "1000000000000005"
    }
    

    Exceptions

    T5-nxGen MBAP performs data validation checks on requests that are received and returns an exception response in case of mising, incomplete or incorrect data.

    Sample Exception JSON Structure

    {
      "documentation": "http://wiki.tech5.tech/Tech5-nxGen-MBAPDeveloperGuide.html",
      "errorCode": 6001,
      "errorMessage": "Delete from face, finger and iris cannot be null or empty; ",
      "httpResponseCode": 400,
      "httpResponseMessage": "Bad Request",
      "transactionId": "xxx-111-dddd-45555",
      "transactionSource": "JMeter"
    }
    

    Authentication

    T5-nxGen MBAP implementes Token based authentication when enabled. Your API requests must be authenticated by MBAP Master in advance before requests can be processed. In order to obtain authentication token, you must have a username and password assigned to you by MBAP administrator.

    ClientMBAP Master1. Login Credentials with password encoded in Base642. Validate Credentails3. Issue Token and set Expiry2. Response with a valid API Token in body and header4. Send API Request with Token in request Header5. Validates API TokenIf Token is valid and not expired6. Process request and sends response if Token is validClientMBAP Master

    Authentication Request :

    URL: http://xxx.xxx.xxx.xxx:portnumber/MBAP/api/authentication/login
    Method: POST
    Consumes: Application/JSON
    Produces: Application/JSON
    Example: http://gn-testapi.tech5.tech:9090/MBAP/api/authentication/login

    Request structure description :

    Once you are authenticated and have received the token, you must provide this token for each subsequent requests to all endpoints. The token must be part of the header (in http authorization) and should included the full token including the word “Bearer”.

    You need to use the following data structure to send authentication request to MBAP Master. The user name and password must already be registered in MBAP.

    Java Class

        public class AuthRequest {
          private String transactionId;
          private String transactionSource;
          private String userName;
          private String password;
        }
    
    

    Sample JSON Authentication Request

    {
      "transactionId": "c25d8d53-c7c4-49b6-996ejagd67",
      "transactionSource": "nxGen MBAP TestTool",
      "userName": "dummyusername",
      "password": "ZHVtbXlwYXNzd29yZA=="
    }
    

    Authentication Response :

    Request structure description :

    public class AuthResponse {
    
      private Boolean authResult;
      private String userName;
      private String securityToken;
      private String tokenExpiry
      private Integer errorCode;
      private String errorMessage;
    
    }
    
    

    Sample JSON Authentication Response

    {
      "authResult": true,
      "errorCode": 200,
      "securityToken": "Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZGVlbCIsImlzcyI6I....lwiVGVjaDUgU0FcIiIsImlhdCI6MTU5NzA1NjI3NCwiZXhwIjoxNTk3MDU5ODc0fQ.SeP1GzP4zAQWuf6ekHy6TJJYHsgYOyIomBydIlpse78",
      "tokenExpiry": "Mon Aug 10 16:44:34 PKT 2020",
      "userName": "dummyuser"
    }
    

    Sample JSON Invalid Authentication Response

    {
      "authResult": false,
      "errorCode": 9003,
      "errorMessage": "You are Not Authorized to Access this resource"
    }
    

    4. ERROR CODES

    Following are the error code definitions:

    Error Code Error Message
    500 INTERNAL SERVER ERROR
    1001 FINGER ENROLLMENT SUCCES
    1002 FINGER ENROLLMENT ERROR
    1003 FINGER TEMPLATE CREATION FAILED
    1007 FINGER IMAGE VERIFICATION ERROR
    1008 FINGER MATCH NOT FOUND
    1009 FINGER TEMPLATE CREATION SUCCESSFULL
    2001 ENROLMENT SUCCESS
    2002 ENROLMENT ERROR
    2003 CREATE FACE TEMPLATE REQUEST::FAILED
    2005 FACE GALLERY TEMPLATE INVALID
    2006 FACE PROBE TEMPLATE INVALID
    2007 FACE IMAGE VERIFICATION ERROR
    2008 FACE MATCH NOT FOUND
    2009 FACE TEMPLATE CREATION SUCCESSFULL
    2013 FACE IMAGE INVALID
    3001 IRIS ENROLLMENT SUCCESS
    3002 IRIS ENROLLMENT ERROR
    3003 IRIS TEMPLATE CREATION FAILED
    3007 IRIS IMAGE VERIFICATION ERROR
    3009 IRIS TEMPLATE CREATION SUCCESSFULL
    2013 FACE IMAGE INVALID
    5001 UID NOT FOUND
    5002 UID ALREADY EXISTS
    6001 MISSING REQUIRED PARAMETERS
    6004 MISSING BIOMETRICS
    6005 INVALID JSON
    6006 INVALID BASE64 STRING

    Please do contact us at support@tech5-sa.com if you need more information or clarification on any of the above topics.

    Thank You