# Modules Supported by the SDK

All the modules supported by the SDK are listed here, with their configuration parameters.

## Phone

Ask the user to enter a phone number.

- `defaultRegionPrefix` (optional): int?. Default region prefix for phone input. If set, will override the current default prefix based on the user's device region selection.
- `otpVerificationEnabled` (optional): bool?

## FullName

Ask the user to enter a name.

- No additional parameters

### Email

Ask the user to enter an email.

- `otpVerificationEnabled` (optional): bool?

### IdScan

Ask the user to capture ID or Passport.

- `showTutorials` (optional, defaults to `true`): bool?
- `idType` (optional): `IdType.id` or `IdType.passport`. If omitted, the app will display a chooser to the user.
- `idCategory` (optional): `IdCategory.primary` or `IdCategory.secondary`
- `scanStep` (optional): If you wish to separate front and back ID scan, specify `ScanStepType.front` or `ScanStepType.back`. `ScanStepType.both` is the default and will capture both front and back of the ID, and process the ID afterwards. If you specify `ScanStepType.front` or `ScanStepType.back` you will have to add `ProcessId` module after the captures.
- `showRetakeScreenForManualCapture` (optional, defaults to `true`): bool? - Specify `false` to omit the photo review screen for manual captures.
- `showRetakeScreenForAutoCapture` (optional, defaults to `false`): bool? - Specify `true` to show photo review screen for auto captures.
- `enableFrontShownAsBackCheck` (optional, defaults to `false`): bool? - Specify `true` to show real-time feedback to the user during back ID capture that he should capture the other side of the ID.
- `enableBackShownAsFrontCheck` (optional, defaults to `false`): bool? - Specify `true` to show real-time feedback to the user during front ID capture that he should capture the other side of the ID.
- `enableRotationOnRetakeScreen` (optional, defaults to `true`): bool? - Specify `false` to disable capture image rotation when user enters photo review screen.
- `showIDOverlay` (optional, defaults to `false`): bool? - Specify `true` to show the ID overlay during ID capture.
- `autoCaptureBestFrameTimeout` (optional, defaults to 25): int - Timer that starts when ID is detected for the first time, defaults to 25 seconds. Manual capture mode will be activated if ID isn't auto-captured successfully before time runs out.
- `autoCaptureNoIdTimeout` (optional, defaults to 60): int - Timer that starts when ID scan auto-capture starts, defaults to 60 seconds. Manual capture mode will be activated if no ID is detected before time runs out.
- `streamFrames` (optional, defaults to false): bool. Enables/disables streaming of the camera feed. It requires SDK `-vc` variant.
- `showIdTypeChooser` (optional): bool?. If set to `true`, the ID type chooser screen will be displayed to the user, allowing them to select their ID type before scanning.

### ProcessId

Process the ID in case `IdScan` was separated into front and back captures.

- `idCategory` (optional): `IdCategory.primary` or `IdCategory.secondary`
- Note: Please make sure to call this module only after both `ScanStepType.front` and `ScanStepType.back` IdScans are completed.

### SelfieScan

Ask the user to capture a selfie.

- `showTutorials` (optional, defaults to `true`): bool?
- `lensesCheck` (optional, defaults to `true`): bool?. Performs a check if the user is wearing glasses during Selfie Scan.
- `cameraFacing` (optional, defaults to `IdScanCameraFacing.front`): Specifies which camera will be used during Selfie capture. To use back camera instead, set `IdScanCameraFacing.back`.
- `faceMaskCheck` (optional, defaults to `true`): bool?. This checks if a person has a face mask on.
- `streamFrames` (optional, defaults to false): bool. Enables/disables streaming of the camera feed. It requires SDK `-vc` variant.

### FaceMatch

Perform a face match between captured ID and Selfie.

- `idCategory` (optional, defaults to `primary`): `IdCategory.primary` or `IdCategory.secondary`
- `faceMatchType` (optional): `FaceMatchType.idSelfie`, `FaceMatchType.nfcSelfie`, or `FaceMatchType.nfc3Way`
- `showUserExists` (optional, defaults to `true`): boolean
- Note: has to be specified **after IDScan and SelfieScan** modules.

### Geolocation

Get the information about the user's current location.

- `isSkippable` (optional, defaults to `false`): bool. Allows the geolocation step to be skipped. When set to `true`, skipping or denying location permission advances the flow instead of ending the session with a permission error.

### GovernmentValidation

Perform government validation of the ID.

- `isBackgroundExecuted` (optional, defaults to `false`): bool?. Specify true to hide the module UI during its execution.

### VideoSelfie

Records the device's screen while the user needs to do a selfie, show his ID, answer a couple of questions and verbally confirm that he accepts the terms and conditions.

- `showTutorials` (optional, defaults to `true`): bool?. Show tutorial for video selfie.
- `selfieScanMode` (optional, defaults to `selfieMatch`): `SelfieScanMode.selfieMatch` or `SelfieScanMode.faceMatch`;
- `selfieLivenessCheck` (optional, defaults to `false`): bool?. Check for user liveness during video selfie.
- `showIdScan` (optional, defaults to `true`): bool?. Ask for ID scan during video selfie.
- `showDocumentScan` (optional, defaults to `true`): bool?. Ask for Proof of Address during video selfie.
- `showVoiceConsent` (optional, defaults to `true`): bool?. Ask for Voice consent during video selfie.
- `voiceConsentQuestionsCount` (optional, defaults to `3`): int?. Choose number of questions for video selfie voice consent steps.

### UserScore

Shows the info and scoring for all the steps performed.

- `mode` (optional, defaults to `accurate`): `UserScoreFetchMode.accurate` or `UserScoreFetchMode.fast`.

### Approve

Based on a score approves the current onboarding session and adds the user to the omni database.

- `forceApproval` (optional, defaults to `false`): bool? - if `true` the user will be force-approved

### Signature

Ask the user to draw a signature.

- `title`: (optional) string - Adds optional title to the top of the screen. Contains value of the title string key.
- `description`: (optional) string - Adds optional description below the title. Contains value of the description string key.

### DocumentScan

Ask the user to capture a document.

- `showTutorials` (optional, defaults to `true`): bool?. Show tutorial for document scan.
- `documentType` (optional, defaults to `DocumentType.addressStatement`).

### Captcha

Ask the user to complete CAPTCHA.

- No additional parameters

### CURP

Validate user's curp from the ID.

- No additional parameters

### OCREdit

Review OCR data.

- `isEditable` (optional, defaults to `false`): bool?

### EKYB

Enables a KYB validation step with the business information.

- `checkBusinessName` (optional, defaults to `true`): bool?
- `checkAddress` (optional, defaults to `true`): bool?
- `checkTaxId` (optional, defaults to `true`): bool?

### EKYC

Enables a KYC validation step with the user's information.

- `checkName` (optional, defaults to `true`): bool?
- `checkEmail` (optional, defaults to `true`): bool?
- `checkAddress` (optional, defaults to `true`): bool?
- `checkPhone` (optional, defaults to `true`): bool?
- `checkSsn` (optional, defaults to `true`): bool?
- `checkDob` (optional, defaults to `true`): bool?
- `checkNationality` (optional, defaults to `true`): bool?

### MLConsent

Ask the user for Machine Learning consent.

- `type` (required): `MLConsentType.gdpr` or `MLConsentType.us`

### UserConsent

Ask the user for User consent.

- `title`: String, title for user consent.
- `content`: String, content for user consent.

### CombinedConsent

Ask the user for Data sharing consent.

- `consentId`: String, id for combined consent.

### QRScan

Ask the user for QR scan.

- `showTutorials` (optional, defaults to `true`): bool?. Show tutorial for QR scan.

### Antifraud

Gives ability to compare current interview with existing interviews and customers, detecting anomalies that could be signs of fraud.

- No additional parameters

### GlobalWatchlist

This module checks customer identities against sources of Sanctions, Politically Exposed Persons (PEPs), & Watchlists.

- No additional parameters

### CustomWatchlist

This module checks if the user is present inside Incode's watchlist.

- No additional parameters

### Aes

This module enables an advanced electronic signature.

- `uploadDocument` (optional, defaults to `false`): bool?.
- `downloadDocument` (optional, defaults to `false`): bool?.

### NFCScan

Ask the user to scan the NFC chip on their document.

- `idType` (optional): `IdType.id` or `IdType.passport`.
- `showNFCSymbolConfirmationScreen` (optional, defaults to `true`): bool?
- `showInitialDataConfirmationScreen` (optional, defaults to `true`): bool?
- `processNFCData` (optional, defaults to `true`): bool?

### FaceAuthentication

Performs a selfie scan to authenticate the user.

- `showTutorials` (optional): defaults to `true`: bool?
- `autoCaptureTimeout` (optional): defaults to `16`: number?
- `captureAttempts` (optional): defaults to `3`: number?
- `eyesClosedCheck` (optional): defaults to `true`: bool?
- `headCoverCheck` (optional): defaults to `true`: bool?
- `lensesCheck` (optional): defaults to `true`: bool?
- `faceMaskCheck` (optional): defaults to `true`: bool?

## Modules Interdependencies

- `ProcessId` module expects both `ScanStepType.front` or `ScanStepType.back` IdScans to have executed.
- `FaceMatch` module expects `IdScan` and `SelfieScan` to have executed.
- `VideoSelfie` module expects the `IdScan` in `faceMatch` mode, or `SelfieScan` in `selfieMatch` mode.
- `UserScore` module should succeed all other modules (must be at the end).
- `Approve` module should succeed all other modules (must be at the end).
- The `UserScore` and `Approve` modules do not depend on each other, so their order can be arbitrary.
- `Aes` module expects `Phone`, `IdScan` and `SelfieScan` to precede it.
