apisdk-[VERSION].jar
, put jar file to libs of project.
Example: folder ${project.rootDir}/libs/
Please contact the administrator to get library file.
SDK needs to be initialized first
// Init the TVAPI. Contact admin to get ACCESS_KEY/SECRET and how to use TVAuthorization
String accessKey = "YOUR ACCESS KEY";
String secretKey = "YOUR SERCRET KEY";
boolean encryptBody = false ;
String url = "https://tv-staging.trustingsocial.com/api";
TVAuthorizationProvider authorization = new TVAuthorizationProvider(accessKey, secretKey, encryptBody);
int connectionPoolSize = 30;
// Init SDK with custom connection pool
TVApi.initWithConnectionPool(url, authorization, connectionPoolSize);
The client should generate X-Request-Id to easy reconcile and tracing API's call. Reference
// X-Request-Id to group all requests of same user
Map<String, String> headers = new HashMap<String, String>();
headers.put("X-Request-Id", userID);
After having headers we should pass it via params header of each API.
// Example
// Upload
TVResponseData<TVUploadImageResponse> uploadQrResp = TVApi.getInstance().uploadImage(..., headers);
// Portrait Sanity
TVResponseData<TVSelfieSanityResponse> portraitSanityResp = TVApi.getInstance().syncVerifySelfieSanity(selfieSanityRequest, null, headers);
// Liveness check
TVResponseData<TVVerifyLivenessResponse> livenessResp = TVApi.getInstance().syncVerifyLiveness(verifyLivenessRequest, null, headers);
// ID Sanity
TVResponseData<TVIDSanityResponse> idSanityResponse = TVApi.getInstance().syncVerifyIDSanity(cardRequest, null, headers);
// OCR
TVResponseData<TVCardInfoResponse> ocrResp = TVApi.getInstance().syncReadIdCardInfo(cardRequest, null, headers);
// ID Tampering
TVResponseData<TVIdTamperingResponse> idCardTamperingResp = TVApi.getInstance().syncDetectIdTampering(detectIDTamperingRequest, null, headers);
// Compare faces
TVResponseData<TVCompareFaceResponse> compareFaceResp = TVApi.getInstance().syncCompareFaces(compareFaceRequest, null, headers);
// Index faces
TVResponseData<TVIndexFacesResponse> indexResponse = TVApi.getInstance().syncIndexFaces(indexFacesRequest, null, headers);
// Search faces
TVResponseData<TVSearchFacesResponse> searchResponse = TVApi.getInstance().syncSearchFaces(searchFacesRequest, null, headers);
//...
// Create temporary credentials
int durationInSeconds = 900;
String transactionID = "";
String xRequestID = "";
String xRequestID2 = "";
Map<String, String> headers = new HashMap<String, String>();
headers.put("X-Request-Id", xRequestID);
headers.put("X-Request-Id2", xRequestID2);
TVTemporaryCredentialRequest request = new TVTemporaryCredentialRequest(durationInSeconds);
TVResponseData<TVTemporaryCredentialResponse> response = TVApi.getInstance().createTemporaryCredential(request, transactionID, headers);
System.out.println("TVTemporaryCredentialResponse: " + GsonUtils.toJson(response));
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("Create temporary credentials error:" + errors.get(0).getMessage());
} else {
System.out.println("Create temporary credentials successful");
}
// Get client settings
TVResponseData<TVClientSettings> response = TVApi.getInstance().getClientSettings();
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("Get client settings error:" + errors.get(0).getMessage());
} else {
System.out.println("Get client settings successful");
}
System.out.println(response.getRawJSON());
//Upload id image
File idCardFrontFile = new File("./resources/id_card_front.jpg"); // CMND image
File selfieFile = new File("./resources/selfie.jpg"); // Selfie image
String idFrontLabel = "id_card.vn.national_id.front";
try {
// Read Image
BufferedImage image = ImageIO.read(idCardFrontFile);
// Call API upload
TVResponseData<TVUploadImageResponse> uploadIDCardResp = TVApi.getInstance()
.uploadImage(TestEkycApplication.toByteArray(image), idFrontLabel, null);
if (uploadIDCardResp.hasErrors()) {
// Hanlder errors and return
} else {
idImageID = uploadIDCardResp.getData().getImageId();
}
// Upload selfie
image = ImageIO.read(selfieFile);
TVResponseData<TVUploadImageResponse> uploadSelfieResp = TVApi.getInstance()
.uploadImage(TestEkycApplication.toByteArray(image), "portrait", null, headers);
if (uploadSelfieResp.hasErrors()) {
// Hanlder errors and return
} else {
selfieImageID = uploadSelfieResp.getData().getImageId();
System.out.println(String.format("Selfie Image ID: %s", selfieImageID));
}
} catch (IOException e) {
e.printStackTrace();
}
// Upload video frame batch
Map<String, String> headers = new HashMap<String, String>();
headers.put("X-Request-Id", userID);
headers.put("X-Request-Id2", "");
List<TVSyncFrame> frameBatch = new ArrayList<TVSyncFrame>();
// Read frames returned by SDK and parse to `frameBatch`
// Example:
// for (int index = 0; index < 50; index++) {
// TVSyncFrame frame = TVSyncFrame.createByBase64("base64", "portrait", null, index);
// frameBatch.add(frame);
// }
TVUploadFramesRequest request = new TVUploadFramesRequest(frameBatch, "portrait");
TVResponseData<TVUploadFramesResponse> response = TVApi.getInstance().uploadFrames(request, "portrait", headers);
if (response.hasErrors()) {
System.out.println("Upload frames error:" + response.getErrors().get(0).getMessage());
} else {
System.out.println("Upload frames successful");
}
Use the secured X-Request-Id2 to pass to API Upload image/video/frames.
Use CryptoUtils
to generate secured X-Request-Id2 in one of the following ways:
The X-Request-Id2 max value length is 64.
import com.trustingsocial.apisdk.utils.CryptoUtils;
import java.security.KeyFactory;
import java.security.interfaces.RSAPrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.Base64;
String xRequestID2 = "";
Map<String, String> headers = new HashMap<String, String>();
// SHA256
headers.put("X-Request-Id2", CryptoUtils.SumOfSha256(xRequestID2));
// AES-GCM
String aesKey = "JwpOC9x3tjuEafEAcJGo3r7ts5dzC08X";
headers.put("X-Request-Id2", CryptoUtils.EncryptAesGcm(xRequestID2, aesKey));
// Digital Signature using RSA private key
String key = new String(Files.readAllBytes(file.toPath()), Charset.defaultCharset());
String privateKeyPEM = key
.replace("-----BEGIN PRIVATE KEY-----", "")
.replaceAll(System.lineSeparator(), "")
.replace("-----END PRIVATE KEY-----", "");
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyFactory.generatePrivate(new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKeyPEM)));
headers.put("X-Request-Id2", CryptoUtils.Sign(xRequestID2.getBytes(), rsaPrivateKey));
TVSyncImage selfieImage = TVSyncImage.createById(selfieImageID); // Selfie
// Portrait sanity
TVSelfieSanityRequest selfieSanityRequest = new TVSelfieSanityRequest(selfieImage);
TVResponseData<TVSelfieSanityResponse> portraitSanityResp = TVApi.getInstance().syncVerifySelfieSanity(selfieSanityRequest);
if (portraitSanityResp.hasErrors()) {
List<TVApiError> errors = portraitSanityResp.getErrors();
System.out.println("Portrait Sanity verdict:" + errors.get(0).getMessage());
} else {
System.out.println("Portrait Sanity verdict: good");
}
// Preparing liveness check request
List<TVSyncImage> listFrontalImages = new ArrayList<TVSyncImage>();
// Upload 2-4 frontal image from SDK, should upload in concurrency
for (int i = 0; i < 4; i++) {
image = ImageIO.read(selfieFile);
TVResponseData<TVUploadImageResponse> uploadSelfieResp = TVApi.getInstance()
.uploadImage(TestEkycApplication.toByteArray(image), "portrait", null);
if (uploadSelfieResp.hasErrors()) {
// Hanlder errors and return
} else {
selfieImageID = uploadSelfieResp.getData().getImageId();
System.out.println(String.format("Selfie Image ID: %s", selfieImageID));
listFrontalImages.add(TVSyncImage.createById(selfieImageID));
}
}
List<TVGestureImages> gestureImages = new ArrayList<TVGestureImages>();
// Upload 3 gesture images from SDK, should upload in concurrency
String[] gestures = new String[]{"left", "up", "right"};
for (String gesture : gestures) {
image = ImageIO.read(selfieFile);
TVResponseData<TVUploadImageResponse> uploadSelfieResp = TVApi.getInstance()
.uploadImage(TestEkycApplication.toByteArray(image), "portrait", null);
if (uploadSelfieResp.hasErrors()) {
// Hanlder errors and return
} else {
selfieImageID = uploadSelfieResp.getData().getImageId();
System.out.println(String.format("Selfie Image ID: %s", selfieImageID));
// Create list images of a gesture
List<TVSyncImage> listImageOfGesture = new ArrayList<TVSyncImage>();
listImageOfGesture.add(TVSyncImage.createById(selfieImageID)); // currently use 1 image only
// Create gesture image
TVGestureImages gestureImage = new TVGestureImages(gesture, listImageOfGesture);
gestureImages.add(gestureImage);
}
}
List<TVSyncVideo> videos = new ArrayList<TVSyncVideo>();
// Upload video frame batches from SDK
int exampleNumberOfBatches = 20;
for (int i = 0; i < exampleNumberOfBatches; i++) {
List<TVSyncFrame> frameBatch = new ArrayList<TVSyncFrame>();
// Read frames returned by SDK and parse to `frameBatch`
// int exampleBatchSize = 10;
// for (int index = 0; index < exampleBatchSize; index++) {
// TVSyncFrame frame = TVSyncFrame.createByBase64("base64 here", "portrait", null, index);
// frameBatch.add(frame);
// }
TVUploadFramesRequest request = new TVUploadFramesRequest(frameBatch, "portrait");
TVResponseData<TVUploadFramesResponse> response = TVApi.getInstance().uploadFrames(request, "portrait", headers);
if (response.isSuccessful()) {
String videoId = response.getData().getFileId();
videos.add(TVSyncVideo.createById(videoId));
} else {
// Handle errors
}
}
// Call API liveness check
String selfieType = com.trustingsocial.apisdk.constants.TVFaceAuthSelfieTypeConstant.ACTIVE;
TVVerifyLivnessRequest verifyLivenessRequest = new TVVerifyLivnessRequest(listFrontalImages, gestureImages, null, videos);
verifyLivenessRequest.setSelfieType(selfieType);
TVResponseData<TVVerifyLivenessResponse> livenessResp = TVApi.getInstance().syncVerifyLiveness(verifyLivenessRequest);
if (livenessResp.hasErrors()) {
List<TVApiError> errors = livenessResp.getErrors();
System.out.println("Liveness check error:" + errors.get(0).getMessage());
} else {
TVVerifyLivenessResponse data = livenessResp.getData();
System.out.println("Liveness check result:" + data.getIsLive()); // liveness or not
System.out.println("Liveness check score:" + data.getScore());
System.out.println("Request-ID: " + data.getRequestId());
}
String cardType = "vn.national_id";
TVSyncCardInfoRequest cardRequest = new TVSyncCardInfoRequest(cardType, frontImage);
// ID Card Sanity
TVResponseData<TVIDSanityResponse> idSanityResponse = TVApi.getInstance().syncVerifyIDSanity(cardRequest);
if (idSanityResponse.hasErrors()) {
List<TVApiError> errors = idSanityResponse.getErrors();
System.out.println("ID Sanity verdict:" + errors.get(0).getMessage());
} else {
System.out.println("ID Sanity verdict: good");
}
// Prepare image params
TVSyncImage frontImage = TVSyncImage.createById(idImageID); // Read frontside
// OCR request
String cardType = "vn.national_id";
TVSyncCardInfoRequest cardRequest = new TVSyncCardInfoRequest(cardType, frontImage);
/**
* if card has back side, add this line to have ocr result of two sides.
* cardRequest.setImage2(syncImageIDBack);
*/
/**
* if we have QR code image, add QR image via this param
* cardRequest.setQr1Images(Arrays.asList(TVSyncImage.createById("QR image_id was uploaded via upload API")));
*/
// Call API
TVResponseData<TVCardInfoResponse> ocrResp = TVApi.getInstance().syncReadIdCardInfo(cardRequest);
if (ocrResp.hasErrors()) {
List<TVApiError> errors = ocrResp.getErrors();
System.out.println("OCR error:" + errors.get(0).getMessage());
} else {
TVCardInfoResponse data = ocrResp.getData();
List<TVCardInfoResponse.Info> ocrInfo = data.getCardInformation();
StringBuilder stringBuilder = new StringBuilder();
System.out.println("====OCR Result====");
for (TVCardInfoResponse.Info info : ocrInfo) {
stringBuilder.append(info.getField());
stringBuilder.append(":");
stringBuilder.append(info.getValue());
stringBuilder.append("\n");
}
System.out.println(stringBuilder.toString());
}
TVSyncImage frontImage = TVSyncImage.createById(frontImageID); // Front side
TVSyncImage backImage = TVSyncImage.createById(backImageID); // Back side
String level = "";
String cardType = "vn.national_id";
TVDetectIDTamperingRequest detectIDTamperingRequest = new TVDetectIDTamperingRequest(cardType, frontImage, backImage, level);
// Call ID card tampering API
TVResponseData<TVIdTamperingResponse> idCardTamperingResp = TVApi.getInstance().syncDetectIdTampering(detectIDTamperingRequest, "", headers);
if (idCardTamperingResp.hasErrors()) {
List<TVApiError> errors = idCardTamperingResp.getErrors();
System.out.println("ID Tampering verdict:" + errors.get(0).getMessage());
} else {
System.out.println("ID Tampering verdict: good");
}
//Compare faces
String idImageID = ""; //The image ID after uploaded id image
String selfieImageID = ""; //The image ID after uploaded selfie image
// Prepare image params
TVSyncImage frontImage = TVSyncImage.createById(idImageID); // Front side
TVSyncImage selfieImage = TVSyncImage.createById(selfieImageID); // Selfie
// Call API compare faces
TVResponseData<TVCompareFaceResponse> compareFaceResp = TVApi.getInstance().syncCompareFaces(frontImage, selfieImage);
if (compareFaceResp.hasErrors()) {
List<TVApiError> errors = compareFaceResp.getErrors();
System.out.println("Face matching error:" + errors.get(0).getMessage());
} else {
TVCompareFaceResponse data = compareFaceResp.getData();
if (data.getCompareFaces().isEmpty()) {
return;
}
TVCompareFaceResponse.CompareFaces compareFace = data.getCompareFaces().get(0);
TVCompareFaceResponse.MatchResult compareFaceResult = compareFace.getResult();
System.out.println("Face matching result:" + compareFaceResult.name); // matched, unmatched, unsure
System.out.println("Face matching score:" + compareFace.getScore());
}
String collection = ""; // search and index are same collection
// Call index faces
HashMap<String, Object> metadata = new HashMap<>(); // Will return when search
metadata.put("ID", "1111");
TVSyncImage selfie =TVSyncImage.createById(selfieImageID, metadata);
TVIndexFacesRequest indexFacesRequest = new TVIndexFacesRequest(selfie, collection, true);
TVResponseData<TVIndexFacesResponse> indexResponse = TVApi.getInstance().syncIndexFaces(indexFacesRequest, null, headers);
if (indexResponse.hasErrors()) {
// handle error here
} else {
// handle result here, only check status
}
// Call search faces
TVSyncImage searchImage =TVSyncImage.createById(selfieImageID, metadata);
TVSearchFacesRequest searchFacesRequest = new TVSearchFacesRequest(searchImage, collection);
TVResponseData<TVSearchFacesResponse> searchResponse = TVApi.getInstance().syncSearchFaces(searchFacesRequest, null, headers);
if (searchResponse.hasErrors()) {
// handle error here
} else {
TVSearchFacesResponse data = searchResponse.getData();
List<List<TVFace>> faces = data.getFaces(); // 2 dim arrays, each face in input image has list matched faces
if (faces != null) {
for (List<TVFace> facesMatch : faces) { // Loop on each face input
for (TVFace faceMatch : facesMatch) { // Loop on each face result that matched with input face
System.out.println("Matched with face on image ID: " + faceMatch.getImageId());
List<TVMetadata> metadataResults = faceMatch.getMetadata();
if (metadataResults != null) {
for (TVMetadata metadataResult : metadataResults) {
System.out.println(String.format("%s=%s", metadataResult.getField(), metadataResult.getValue()));
}
}
}
}
}
}
// Delete file ID Card and selfie
TVDeleteFilesRequest deleteFilesRequest = new TVDeleteFilesRequest(Arrays.asList(idImageID, selfieImageID));
TVResponseData<TVDeleteFilesResponse> deleteFilesResponse = TVApi.getInstance().deleteFiles(deleteFilesRequest);
if (deleteFilesResponse.hasErrors()) {
List<TVApiError> errors = deleteFilesResponse.getErrors();
System.out.println("Delete files error:" + errors.get(0).getMessage());
} else {
System.out.println("Delete files successful");
}
// Face Auth Registration
String transactionID = "";
Map<String, String> headers = new HashMap<String, String>();
headers.put("X-Request-Id", userID);
String cusUserID = "c1b3b3b3-1b3b-4b3b-8b3b-3b3b3b3b3b3b";
List<TVSyncImage> imagesFaceAuth = Arrays.asList(
TVSyncImage.createById("3e2693e7-1e8f-40f0-be68-2cf73b09c61b"),
TVSyncImage.createById("36dc7bd6-ed04-4bd3-bd32-61cb9ac4837c"),
TVSyncImage.createById("15b0db75-d238-4a4b-bea9-4897c7af0a08"),
TVSyncImage.createById("d8c330d4-5c7a-4f8e-a0f0-44efffb0cfc6"));
List<TVGestureImages> gestureImagesFaceAuth = Arrays.asList(
new TVGestureImages("right", Arrays.asList(TVSyncImage.createById("99bbe3b5-23e8-41d6-a496-956d7e5c3ed5"))),
new TVGestureImages("down", Arrays.asList(TVSyncImage.createById("fe140383-81ff-47e3-930f-154272e7da6c"))),
new TVGestureImages("left", Arrays.asList(TVSyncImage.createById("dd553b55-5b02-48e3-b2bf-ecfa45c9119b")))
);
List<TVSyncVideo> videos = Arrays.asList(
TVSyncVideo.createById("dfb4a246-09df-42fc-be41-0faafc8dc5bc")
);
List<TVGestureVideos> gestureVideos = Arrays.asList();
String deviceId = "";
String appId = "";
Double lat = Double.valueOf(0d);
Double lng = Double.valueOf(0d);
String faceType = TVFaceAuthFaceTypeConstant.FACE;
String selfieType = TVFaceAuthSelfieTypeConstant.ACTIVE;
TVSyncImage faceInIdCard = TVSyncImage.createById("e975bc8c-9d6e-4118-b905-da8c121636c9");
TVFaceAuthenRegistrationRequest faceAuthRegistrationRequest = TVFaceAuthenRegistrationRequest.builder(cusUserID)
.cusUserId(cusUserID).faces(imagesFaceAuth).gestureFaces(gestureImagesFaceAuth)
.videos(videos).gestureVideos(gestureVideos).selfieType(selfieType)
.deviceId(deviceId).appId(appId).lat(lat).lng(lng)
.faceType(faceType).faceInIdCard(faceInIdCard)
.build();
TVResponseData<TVFaceAuthenResponse> faceAuthRegistrationResponse = TVApi.getInstance().faceAuthenRegister(faceAuthRegistrationRequest, transactionID, headers);
if (faceAuthRegistrationResponse.hasErrors()) {
List<TVApiError> errors = faceAuthRegistrationResponse.getErrors();
System.out.println("Face Auth Registration error:" + errors.get(0).getMessage());
} else {
System.out.println("Face Auth Registration successful");
}
// Face Auth User
String transactionID = "";
Map<String, String> headers = new HashMap<String, String>();
headers.put("X-Request-Id", userID);
String cusUserID = "c1b3b3b3-1b3b-4b3b-8b3b-3b3b3b3b3b3b";
TVFaceAuthenUserRequest faceAuthUserRequest = new TVFaceAuthenUserRequest(cusUserID);
TVResponseData<TVFaceAuthenUserResponse> faceAuthUserResponse = TVApi.getInstance().faceAuthenUser(faceAuthUserRequest, transactionID, headers);
if (faceAuthUserResponse.hasErrors()) {
List<TVApiError> errors = faceAuthUserResponse.getErrors();
System.out.println("Face Auth User error:" + errors.get(0).getMessage());
} else {
System.out.println("Face Auth User successful");
}
// Face Auth
String transactionID = "";
Map<String, String> headers = new HashMap<String, String>();
headers.put("X-Request-Id", userID);
String cusUserID = "c1b3b3b3-1b3b-4b3b-8b3b-3b3b3b3b3b3b";
List<TVSyncImage> imagesFaceAuth = Arrays.asList(
TVSyncImage.createById("3e2693e7-1e8f-40f0-be68-2cf73b09c61b"),
TVSyncImage.createById("36dc7bd6-ed04-4bd3-bd32-61cb9ac4837c"),
TVSyncImage.createById("15b0db75-d238-4a4b-bea9-4897c7af0a08"),
TVSyncImage.createById("d8c330d4-5c7a-4f8e-a0f0-44efffb0cfc6"));
List<TVGestureImages> gestureImagesFaceAuth = Arrays.asList(
new TVGestureImages("right", Arrays.asList(TVSyncImage.createById("99bbe3b5-23e8-41d6-a496-956d7e5c3ed5"))),
new TVGestureImages("down", Arrays.asList(TVSyncImage.createById("fe140383-81ff-47e3-930f-154272e7da6c"))),
new TVGestureImages("left", Arrays.asList(TVSyncImage.createById("dd553b55-5b02-48e3-b2bf-ecfa45c9119b")))
);
List<TVSyncVideo> videos = Arrays.asList(
TVSyncVideo.createById("dfb4a246-09df-42fc-be41-0faafc8dc5bc")
);
List<TVGestureVideos> gestureVideos = Arrays.asList();
String deviceId = "";
String appId = "";
Double lat = Double.valueOf(0d);
Double lng = Double.valueOf(0d);
String authType = TVFaceAuthAuthTypeConstant.LOGIN;
String selfieType = TVFaceAuthSelfieTypeConstant.ACTIVE;
String clientTransactionID = "a9c9a80a-8ae8-4de9-8dab-d85a85d1882e";
TVFaceAuthenRequest faceAuthRequest = TVFaceAuthenRequest.builder(cusUserID)
.cusUserId(cusUserID).faces(imagesFaceAuth).gestureFaces(gestureImagesFaceAuth)
.videos(videos).gestureVideos(gestureVideos).selfieType(selfieType)
.deviceId(deviceId).appId(appId).lat(lat).lng(lng)
.authType(authType).clientTransactionId(clientTransactionID)
.build();
TVResponseData<TVFaceAuthenResponse> faceAuthResponse = TVApi.getInstance().faceAuthen(faceAuthRequest, transactionID, headers);
if (faceAuthResponse.hasErrors()) {
List<TVApiError> errors = faceAuthResponse.getErrors();
System.out.println("Face Auth error:" + errors.get(0).getMessage());
} else {
System.out.println("Face Auth successful");
}
// Face Auth Unregister
String transactionID = "";
Map<String, String> headers = new HashMap<String, String>();
headers.put("X-Request-Id", userID);
String cusUserID = "c1b3b3b3-1b3b-4b3b-8b3b-3b3b3b3b3b3b";
String deviceId = "";
String appId = "";
Double lat = Double.valueOf(0d);
Double lng = Double.valueOf(0d);
TVFaceAuthenUnregistrationRequest faceAuthUserUnregisterRequest = TVFaceAuthenUnregistrationRequest
.builder(cusUserID)
.cusUserId(cusUserID)
.deviceId(deviceId).appId(appId).lat(lat).lng(lng)
.build();
TVResponseData<TVFaceAuthenUnregistrationResponse> faceAuthUserUnregistrationResponse = TVApi.getInstance().faceAuthenUnregister(faceAuthUserUnregisterRequest, transactionID, headers);
if (faceAuthUserUnregistrationResponse.hasErrors()) {
List<TVApiError> errors = faceAuthUserUnregistrationResponse.getErrors();
System.out.println("Face Auth User Unregistration error:" + errors.get(0).getMessage());
} else {
System.out.println("Face Auth User Unregistration successful");
}
{
// Face Auth
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("d56fc303-5da0-4b5f-82dd-2b2aadd4cf57");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getFaceAuthen: " + GsonUtils.toJson( response.getData().getFaceAuthen()));
}
}
{
// Face Auth Register
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("d873f2b9-4127-4a1e-99a3-c702472b76cd");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getFaceAuthenRegistration: " + GsonUtils.toJson( response.getData().getFaceAuthenRegistration()));
}
}
{
// Liveness
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("8fa7e086-cd3e-4e16-9c36-3b50c1d0a1f9");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getLivenessCheck: " + GsonUtils.toJson( response.getData().getLivenessCheck()));
}
}
{
// Compare faces
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("dc180c8a-3e07-4222-92e1-e93552efbcdc");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getCompareFaces: " + GsonUtils.toJson( response.getData().getCompareFaces()));
System.out.println("getCompareFaces: " + GsonUtils.toJson(response.getData().getCompareFaces()));
}
}
{
// Card Sanity
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("8dfb44ac-80c9-41e6-8c1e-738ddeb8c5f4");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getCardSanity: " + GsonUtils.toJson( response.getData().getCardSanity()));
}
}
{
// Portrait Sanity
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("a4d8b62f-5694-45db-90ac-c8ae38c82ff6");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getPortraitSanity: " + GsonUtils.toJson( response.getData().getPortraitSanity()));
}
}
{
// Read ID Card Info
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("43cf328e-dc59-48be-8a56-e379f38ee482");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getReadIdCardInfo: " + GsonUtils.toJson( response.getData().getReadIdCardInfo()));
}
}
{
// Tampering
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("1d8ca09c-1270-4a4b-97ec-54e8a06d4912");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getCardTampering: " + GsonUtils.toJson( response.getData().getCardTampering()));
}
}
{
// Detect ID cards
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("18edb28f-d6c6-47bf-8b88-f7b6fdaeef76");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getDetectIdCards: " + GsonUtils.toJson( response.getData().getDetectIdCards()));
}
}
{
// Delete faces
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getSearchFaces: " + GsonUtils.toJson( response.getData().getSearchFaces()));
}
}
{
// Delete files
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getDeleteFiles: " + GsonUtils.toJson( response.getData().getDeleteFiles()));
}
}
{
// Delete faces
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getDeleteFaces: " + GsonUtils.toJson( response.getData().getDeleteFaces()));
}
}
{
// Index faces
TVResponseData<TVGetResultsByRequestIdResponse> response = TVApi.getInstance()
.getRequestsByReqId("");
if (response.hasErrors()) {
List<TVApiError> errors = response.getErrors();
System.out.println("GetRequestsByReqId error:" + errors.get(0).getMessage());
} else {
System.out.println("getIndexFaces: " + GsonUtils.toJson( response.getData().getIndexFaces()));
}
}