# Enrolment Flow

In order to use our SDK you need an authorization token. Please check our API "[Authorisation](https://docs.uqudo.com/docs/kyc/uqudo-api/authorisation)" in this regard.

Add the following code at the start-up of your application to initialise the SDK:

```javascript
import * as UqudoSDK from 'uqudosdk-capacitor';

...
//On App startup
new UqudoSDK.UqudoPlugin().init();
...
```

For setting the locale of the application you can use the below method:

```javascript
...
new UqudoSDK.UqudoPlugin().setLocale(<your locale eg. en, ar etc.>);
...
```

To check if a document supports enrollment, reading and facial recognition and the enrollment flow you can use the below methods:

```javascript
...
let isEnrollmentSupported = await new UqudoSDK.UqudoPlugin().isEnrollmentSupported(DocumentType.UAE_ID)
let isReadingSupported = await new UqudoSDK.UqudoPlugin().isReadingSupported(DocumentType.UAE_ID)
let isFacialRecognitionSupported = await new UqudoSDK.UqudoPlugin().isFacialRecognitionSupported(DocumentType.UAE_ID)
...
```

Below, you can find an example on how to initiate the enrolment process for a passport enabling the reading through NFC and facial recognition:

```javascript
var passport = new UqudoSDK.DocumentBuilder()
			.setDocumentType(UqudoSDK.DocumentType.PASSPORT)
			.enableReading(new UqudoSDK.ReadingConfigurationBuilder()
			   .forceReadingIfSupported(true)
			   .build()
			)
			.build();
var enrollment = new UqudoSDK.EnrollmentBuilder()
			.setToken(token)
			.enableFacialRecognition()
			.add(passport)
                        .setAppearanceMode(AppearanceMode.SYSTEM)
			.build();
try {
   const plugin = new UqudoSDK.UqudoPlugin();
   const result = await plugin.enroll(enrollment);
   console.log(result.value);
} catch (error) {
   console.log(JSON.parse(error.code));
   //example: {"code":"USER_CANCEL","message":"User canceled the Enrollment process","task":"SCAN"}
}
```

In order to evaluate all the possible options please refer to paragraph [Enrolment Flow](https://docs.uqudo.com/docs/kyc/uqudo-sdk/integration/android/enrolment-flow). The TS interface is the porting of the JAVA one. In addition, you can check index.d.ts inside the plugin ./dist folder or directly from your IDE.

If **successful**, the response is a JSON Web Signature (JWS). Please refer to section "[SDK result](https://docs.uqudo.com/docs/kyc/uqudo-sdk/sdk-result)" for further details.

In case of a **failure**, the callback returns the following object:

<table><thead><tr><th width="122">Property</th><th width="83">Type</th><th width="99">Optional</th><th width="96">Default</th><th>Description</th></tr></thead><tbody><tr><td>code</td><td>String</td><td>No</td><td>None</td><td>See <a href="../../android/enrolment-flow#handling-the-result">Handling the Result</a></td></tr><tr><td>message</td><td>String</td><td>Yes</td><td>null</td><td>Description of the error if any</td></tr><tr><td>task</td><td>String</td><td>Yes</td><td>null</td><td>See <a href="../../android/enrolment-flow#handling-the-result">Handling the Result</a></td></tr></tbody></table>

Add the following code in your Javascript/Typescript to enable the tracing mechanism. Please refer to section [Analytics](https://docs.uqudo.com/docs/kyc/uqudo-sdk/integration/android/analytics) for details.

```kotlin
window.addEventListener("TraceEvent", function (msg) {
     console.log("Trace Event: " + JSON.stringify(msg));
   });
```
