Skip to main content

1. Function Signature

val sdkConfigs = SDKConfigs(
    activeLivenessEnable = true/false,
    passiveLivenessEnable = true/false,
    kioskEnable = true/false
)
val sDKBuilder = SDKBuilder.builder()
    .sdkConfigs(sdkConfigs)
    .setDocumentNumber("xxx-xxxx-xxxxxxxx-x")
    .setEventID(selectedEventId)
    .setDocumentType("uid")
    .setAuthenticateForEvent(true/false)
    .setTicketType("ticketType")
    .setGovIntegration(true/false)
    .functionType(FunctionType.ON_BOARDING)
    .faceHandHandler { sdkResponse ->
        // handle sdk callback
    }
    .build()
 
Launcher.launch(sDKBuilder, context)

2. Required Parameters by Function 

FunctionRequired Parameters
ON_BOARDINGsdkConfigs
TRANSFERuid, biometricType
BIOMETRIC_LOGINdocumentNumber, documentType, eventId
FACE_CAPTUREbiometricType, base64ImageString
KIOSK_MODE_CAMERAeventId
REGISTER_EVENT_BY_QReventId, ticketType
VALIDATE_QReventId, qrData, qrSignature
GET_EVENTSsdkConfigs
GET_USER_DETAILSuid, consentToken
GET_REGISTRANT_DETAILSuid, eventId, consentToken

3. Examples

  • Onboarding:
val sdkConfigs = SDKConfigs( 
    activeLiveness = true, 
    passiveLiveness = true, 
    kioskMode = false 
) 
 
val sdkBuilder = SDKBuilder.builder() 
    .sdkConfigs(sdkConfigs) 
    .functionType(FunctionType.ON_BOARDING) 
    .sdkGeneralHandler { response -> 
        if(response.code == 200){ 
            val uid = response.data?.jsonObject?.get("uid") 
            val token = response.data?.jsonObject?.get("token") 
        } 
    }.build() 
 
Launcher.launch(sdkBuilder, context) 
  • Transaction: 
val sdkConfigs = SDKConfigs( 
    activeLiveness = true, 
    passiveLiveness = true, 
    kioskMode = false 
) 

val sdkBuilder = SDKBuilder.builder() 
    .functionType(FunctionType.TRANSFER) 
    .setBiometricType("face") 

   .sdkConfigs(sdkConfigs) 
    .setUiD(uid) 
    .sdkGeneralHandler { response -> 
        if(response.code == 200){ 
            // transaction verified 
        } 
    }.build() 
 
Launcher.launch(sdkBuilder, context)
  • Authentication: 
val sdkConfigs = SDKConfigs( 
    activeLivenessEnable = sdkConfigManager.activeLiveness, 
    passiveLivenessEnable = sdkConfigManager.passiveLiveness, 
    kioskEnable = sdkConfigManager.kioskMode 
) 
val sdkBuilder = SDKBuilder.builder() 
    .sdkConfigs(sdkConfigs) 
    .setDocumentNumber(uiState.documentNumber) 
    .setEventID(selectedEventId) 
    .setDocumentType(uiState.documentType) 
    .setAuthenticateForEvent(true) 
    .functionType(FunctionType.BIOMETRIC_LOGIN) 
    .faceHandHandler { sdkResponse -> 
        if (sdkResponse.uID != null && sdkResponse.token != null) { 
            navController.navigateToRegistrantDetailsScreen( 
                uId = sdkResponse.uID!!, 
                selectedEventId, 
                consentToken = sdkResponse.token!! 
            ) 
        } else { 
            context.showMessage("${sdkResponse.message}") 
        } 
    }.build() 
Launcher.launch(sdkBuilder, context) 
  • Search:
val sdkConfigs = SDKConfigs(activeLivenessEnable = sdkConfigManager.activeLiveness, passiveLivenessEnable = sdkConfigManager.passiveLiveness, kioskEnable = sdkConfigManager.kioskMode) 

val sDKBuilder = SDKBuilder.builder().sdkConfigs(sdkConfigs).functionType(FunctionType.KIOSK_FACE,).faceHandHandler { sdkResponse -> 

    Log.e("sdkResponse Customer Search",": ${sdkResponse}") 

    if (sdkResponse.uID!=null && sdkResponse.token!=null){ 

        sdkResponse.uID?.let { 

            if (isNormal)  navController.navigateToProfileDetailsScreen(uID = it, consentToken = sdkResponse.token)  else  

// perfomr action here  

        } 

    }else{ sdkResponse.message?.let { showMessage(navController, message = it) } }}.build() 

Launcher.launch(sDKBuilder, context) 
  • Search Capture: 
SDK. faceCapture( 

base64Image = base64ImageString, biometricType = "face", govVerification = true/false, eventId = eventId 

) { result -> 

    //  ALWAYS switch to Main thread for UI 

    Log.e(" faceCapture: ", " Response: $result") 

    context.lifecycleScope.launch(Dispatchers.Main) { 

 

        when (result) {   

 is ApiFunctionsResult.Loading -> { 

                Log.e(" faceCapture ", "Loading...") // show loading } 

            is ApiFunctionsResult.Success -> { // data  

                context.showLoader = false // hide loading 

                if (result.data != null) { 

                   // perform action 

                } else { 

                    val message = result.errors.safeErrorMessage() 

                    showMessage(context, message) 

                } 

            } 

              is ApiFunctionsResult.Failure -> {  context.showLoader = false // hide  

  Log.e(" faceCapture: ", "Failed : Response: ${result.errors?.toString()}")  

// show message touser 

 }  } }} 

 
  • Get Events: 
SDK. getEvents(evenetId=””,status=”Active”) 

 { result -> 

    //  ALWAYS switch to Main thread for UI 

    Log.e(" getEvents: ", " Response: $result") 

    context.lifecycleScope.launch(Dispatchers.Main) { 

        when (result) {   

 is ApiFunctionsResult.Loading -> { 

                Log.e(" getEvents ", "Loading...") // show loading } 

            is ApiFunctionsResult.Success -> { // data  

                context.showLoader = false // hide loading 

                if (result.data != null) { 

                   // perform action 

                } else { 

                    val message = result.errors.safeErrorMessage() 

                    showMessage(context, message) 

                } 

            } 

              is ApiFunctionsResult.Failure -> {  context.showLoader = false // hide  

  Log.e(" getEvents: ", "Failed : Response: ${result.errors?.toString()}")  

// show message touser 

 }  } }} 

 
  • Event Registration: 
val sdkConfigs = SDKConfigs(activeLivenessEnable = sdkConfigManager.activeLiveness, passiveLivenessEnable = sdkConfigManager.passiveLiveness, kioskEnable = sdkConfigManager.kioskMode) 

val sDKBuilder = SDKBuilder.builder().sdkConfigs(sdkConfigs).setEventID(eventId).setTicketType(ticketType).setGovIntegration(sdkConfigManager.govVerification) 

    .functionType( 

        FunctionType.REGISTER_EVENT_BY_QR, 

    ).sdkGeneralHandler { sdkResponse -> 

        Log.e("sdkResponse : ","$sdkResponse") 

        Log.e("eventQrRegistration : ","$sdkResponse") 

        if (sdkResponse.code==200){ 

            val qrResponse = Json.decodeFromJsonElement<QrResponse>(sdkResponse.data!!) 

            val payloadData = qrResponse.payload?.data 

            val payloadSignature = qrResponse.payload?.signature 

            val uid = qrResponse.uid 

        }else{ 

            val message = sdkResponse.errors.safeErrorMessage() 

            showMessage(navController, message = message) } 

    }.build() 

Launcher.launch(sDKBuilder,context) 
  • Embedded View (KioskMode/EnventBiometricCheckin: 
val sDKBuilder = SDKBuilder.builder() 

    .sdkConfigs(sdkConfigs) 

    .setDocumentNumber(documentNumberForApi) 

    .setEventID(selectedEventId) 

    .setDocumentType(uiState.documentType) 

    .setAuthenticateForEvent(true)// for even checkin true for normal login false 

    .functionType(FunctionType.KIOSK_MODE_CAMERA) 

    .faceHandHandler { sdkResponse -> 

        Log.e("BIOMETRIC_LOGIN_Event", "$sdkResponse") 

        if (sdkResponse.uID != null && sdkResponse.token != null) { 

            navController.navigateToRegistrantDetailsScreen( 

                uId = sdkResponse.uID!!, 

                eventId = selectedEventId, 

                consentToken = sdkResponse.token!! 

            ) 

        } else { 

            val message = sdkResponse.message?: "Unable to check-in please try again" 

            showMessage(navController=navController, message = message) 

           // context.showMessage("${sdkResponse.message}") 

        } 

    } .build() 

Launcher.launch(sDKBuilder, context)
Response
QuepassKitOutputModel 

          
  data class SDKResponse( 

    var code:Int?=null, // 200 for success 

    var data: JsonElement? = null, 

    var errors: JsonElement? = null 

)    
          
    public struct ErrorModel{     
        public let code: Int     
        public let message: String     
        public let details: String     
    }     
          
  • ExpressVerfication:
val sdkConfigManager = (context as MainActivity).sdkConfigManager
val sdkConfigs = SDKConfigs(activeLivenessEnable = sdkConfigManager.activeLiveness, passiveLivenessEnable = sdkConfigManager.passiveLiveness, kioskEnable = sdkConfigManager.kioskMode)
val quepassBuilder = QuepassBuilder.builder()
    .sdkConfigs(sdkConfigs)
    .setManualEntryParams(identifierType=identifierType,nationality=nationality,identifierNumber=identifierNumber)
    .functionType(FunctionType.EXPRESS_VERIFICATION)
    .sdkGeneralHandler { sdkResponse ->
        if (sdkResponse.code == 200) {
            val uid = sdkResponse.data?.jsonObject?.get("uid")?.jsonPrimitive?.contentOrNull
            val token = sdkResponse.data?.jsonObject?.get("token")?.jsonPrimitive?.contentOrNull
                             // Example: Home screen, dashboard, etc.
                              Log.e("uid:  →", "  $uid")
                       if (uid!=null && token!=null){
                      navController.navigateToUserDetailsScreen(uID = uid, consentToken = token)
                       }
 
                  } else {
                       Toast.makeText(context,"${sdkResponse.errors}", Toast.LENGTH_LONG).show()
                       Log.e("Failure → sdkResponse : "," ${sdkResponse.errors}")
                      }
                      } .build()
 
                         //  Launch QuePass Activity
                       Launcher.launch(
                          quepassBuilder,
                              context
                                )
  • ExpressOnboarding:
val sdkConfigManager = (context as MainActivity).sdkConfigManager
val sdkConfigs = SDKConfigs(activeLivenessEnable = sdkConfigManager.activeLiveness, passiveLivenessEnable = sdkConfigManager.passiveLiveness, kioskEnable = sdkConfigManager.kioskMode)
val quepassBuilder = QuepassBuilder.builder()
    .sdkConfigs(sdkConfigs)
    .setManualEntryParams(identifierType=identifierType,nationality=nationality,identifierNumber=identifierNumber)
    .functionType(FunctionType.EXPRESS_ONBOARDING)
    .sdkGeneralHandler { sdkResponse ->
        if (sdkResponse.code == 200) {
            val uid = sdkResponse.data?.jsonObject?.get("uid")?.jsonPrimitive?.contentOrNull
            val token = sdkResponse.data?.jsonObject?.get("token")?.jsonPrimitive?.contentOrNull
                             // Example: Home screen, dashboard, etc.
                              Log.e("uid:  →", "  $uid")
                       if (uid!=null && token!=null){
                      navController.navigateToUserDetailsScreen(uID = uid, consentToken = token)
                       }
 
                  } else {
                       Toast.makeText(context,"${sdkResponse.errors}", Toast.LENGTH_LONG).show()
                       Log.e("Failure → sdkResponse : "," ${sdkResponse.errors}")
                      }
                      } .build()
 
                         //  Launch QuePass Activity
                       Launcher.launch(
                          quepassBuilder,
                              context
                                )
 
Success data (common fields): 
  1. uid — User unique ID 
  2. token — Consent token 
  3. message — Success message 
  4. isSuccess — Boolean