# Introduction

Welcome to Orba One! This documentation will help you understand how our solutions work and how you can integrate us into your website, app, or signup flow.

#### What is Orba One?

Orba One is a suite of customizable user identification tools including liveness detection, document verification, facial recognition, and more. These tools are combined to estimate the authenticity of a **User's** **Identity** shared with you.&#x20;

#### **How it works**

A **User** submits a video selfie and valid identifying **Documents** during an **Onboarding** process, guided by the Orba One's integration. Once all the necessary **Documents** are submitted, **Data points** are extracted, digitized, and authenticated. These **Data points** then becomes part of the **User's Identity**. The **User** then consents to share **Data points** from their **Identity** with you. This information is passed to you and can be used to make decisions about a **User (**&#x65;.g. activate account).&#x20;


# Quick Start - Web Integration

A quick start guide in implementing Orba One in your web application

## Getting Started

Welcome to Orba One! We’re glad you’re here. The goal of this tutorial is to guide you through integrating Orba One into your web application. As we walk through that process, we’ll introduce and go over the underlying structure of an Orba One integration.

### Create an Orba One Developer Account

To get started with Orba One, you first need to sign up for an Orba One developer account. Once you've signed up, log into your [Developer Dashboard](https://dashboard.orbaone.com) and create a new Orba One API Key.

* Your **public** API key connects your client-side SDKs (e.g your web application) to Orba One
* Your **secret** API key is for all your server-side libraries (e.g your backend server or serverless function)

### Installing the Web SDK&#x20;

Before you start integrating Orba One, you’ll need to install the Web SDK.

{% tabs %}
{% tab title="yarn" %}

```bash
yarn add @orbaone/core
```

{% endtab %}

{% tab title="npm" %}

```
npm install --save @orbaone/core
```

{% endtab %}
{% endtabs %}

### Create your first applicant&#x20;

In order to get started with Orba One, you will need to create your first applicant. There are two ways that you can implement the verification process into your web application.

{% tabs %}
{% tab title="During Sign Up" %}

#### During the signup process&#x20;

You can start the verification process during sign up by sending the applicant's first and last name to the Orba One API. From there the verification process can occur in the middle of your sign up process. Afterwhich upon a successful response, you can continue your sign up.&#x20;
{% endtab %}

{% tab title="After Sign Up" %}

#### After the applicant has signed up for your service

After the applicant has signed up for your service you can start their verification process at any time by sending their first and last name to the Orba API.&#x20;
{% endtab %}
{% endtabs %}

#### Sending the user information to the Orba One API

After collecting the applicant's first and last name, you can start the verification process by sending this information to the Orba API as a POST request.

## Create Applicant

<mark style="color:green;">`POST`</mark> `https://api.orbaone.com/api/v1/applicants/create`

Creates an applicant with the information provided

#### Path Parameters

| Name       | Type   | Description                 |
| ---------- | ------ | --------------------------- |
| lastName   | string | The applicant's last name   |
| firstName  | string | The applicant's first name  |
| middleName | string | The applicant's middle name |

#### Headers

| Name   | Type   | Description         |
| ------ | ------ | ------------------- |
| Secret | string | Your secret API Key |
| ApiKey | string | Your public API Key |

{% tabs %}
{% tab title="200 Applicant successfully created" %}

```
{ "success" : true }
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Check out the [REST API endpoints ](https://docs.orbaone.com/rest-api/endpoints)
{% endhint %}

### Starting the Orba One verification flow

Great job, you've successfully created your first applicant. Now it's time to start the Orba One verification process. To do this you first need to render the Verify Me button.&#x20;

You can do this in two easy steps

1\. Import the Orba One SDK

```
import { renderButton } from "@orbaone/core";
```

2\. Render the Verify Me button

```
renderButton({
  apiKey: "exampleAPIKey",
  applicantId: "0000-0000-0000-0000",
  target: "#button",
  disableStyle: false,
  onSuccess: (data) => {console.log(data)},
  onError: (err) => {console.log(err)},
  steps: ['welcome'],
})
```

From there Orba One will start the process of verifying your applicant.

{% hint style="success" %}
Congratulations, you've just created and verified  your first applicant :tada:
{% endhint %}


# JavaScript

This document explains how to integrate the Authentication flow from your web application

## Orba One

To integrate the Orba One SDK, follow this guide and use your own API Key which you can obtain from the [developer dashboard](https://dashboard.orbaone.com).

The integration of the Orba One Web SDK follows these simple steps:

1. Install the SDK through NPM / Yarn
2. Get an API Key
3. Render the Orba One verification button and handle the result

Additionally, there is a non-package manager installation option. You can start using the Orba One SDK library directly by including it in your HTML file. Instructions can be found below.

## 1. Install the SDK

```bash
# Yarn
yarn add @orbaone/core

# NPM
npm install --save @orbaone/core
```

## 2. Get an API Key

Orba One uses API keys to allow access to the API and show onboarded users in your dashboard. Login to your Orba One account and create a new Orba One API key here: [Developer Dashboard](https://vendor.orbaone.com).

## 3. Render the verification button

**Import the Orba One SDK**

```javascript
import { renderButton } from "@orbaone/core";
```

#### Example Usage

```javascript
renderButton({
  apiKey: "exampleAPIKey",
  applicantId: "0000-0000-0000-0000",
  target: "#button",
  disableStyle: false,
  onSuccess: (data) => {console.log(data)},
  onCancelled: (data) => {console.log(data)},
  onError: (err) => {console.log(err)},
  steps: ['welcome'],
})
```

#### renderButton(config) Options

| Parameter    | Type                 | Description                                       |
| ------------ | -------------------- | ------------------------------------------------- |
| target       | string or DOMElement | The DOM element you want to mount the button on.  |
| apiKey       | string               | The OrbaOne Key you obtained from the dashboard.  |
| applicantId  | string               | The ID of the applicant that you want to onboard. |
| disableStyle | boolean (optional)   | The OrbaOne Key you obtained from the dashboard.  |
| onSuccess    | function             | Callback function after onboarding is complete.   |
| onError      | function             | Callback function if onboarding has failed.       |
| steps        | array                | Array of verification steps.                      |

### Browser

Orba One is available over [unpkg](https://unpkg.com/) CDN

```
<script type="text/javascript" defer="true" src="https://unpkg.com/@orbaone/core@1.0.18/lib/index.umd.js" />
```

#### Example Usage

```markup
<script type="text/javascript">
    OrbaOne.renderButton({
        apiKey: "exampleAPIKey",
        applicantId: "0000-0000-0000-0000",
        target: "#button",
        disableStyle: false,
        onSuccess: (data) => {
            console.log(data);
        },
        onError: (err) => {
            console.log(err);
        },
        onCancelled: (state) => {
             console.log(state);
        },
        steps: ["welcome"],
    });
</script>
```


# Android

This document explains how to integrate the Orba One authentication flow into your android application.

### 1. Install as a Gradle Plugin

The SDK works on API 21+. To fetch with Gradle, make sure you add the Orba One maven repository in your root project's build.gradle file:

```
repositories {
  ...
  mavenCentral()
}
```

Then add the following dependency to your app build.gradle file. You should replace the `+` with your desired version of the SDK.

```
dependencies {
    ...
    implementation 'com.orbaone:orba-one-sdk:+'
}
```

Now sync your build gradle to install the sdk.

### 2. Initializing the SDK

The Orba One SDK uses a **publishable api key** and an **applicant id** that you can obtain from your vendor dashboard. Your Publishable Api key and Applicant Id will be needed in order to initialize the SDK in your mobile app. A sample implementation is shown below.

```java
import com.orbaone.orba_one_capture_sdk_core.OrbaOne;

OrbaOne oneSdk = new OrbaOne.Builder().setApiKey("publishable-api-key").setApplicantId("applicant-id").create();
oneSdk.startVerification(this);
```

### 3. Handling Verifications

Orba One exposes two callbacks in order to let you know if the user has completed or cancelled the verification flow. A third callback (onStartVerification) is also supplied to alert you if the user has successfully began the flow.

```java
oneSdk.onStartVerification(new OrbaOne.Response() {
  @Override
  public void onSuccess() {
    // Flow started
  }

  @Override
  public void onFailure(String message) {
    // Flow not started
  }
});

oneSdk.onCompleteVerification(new OrbaOne.Callback() {
  @Override
  public void execute(String key) {
    // Flow completed successfully. The applicant id is also returned as a parameter.
  }
});

oneSdk.onCancelVerification(new OrbaOne.Callback() {
  @Override
  public void execute() {
    // Flow cancelled by the user.
  }
});
```

### 4. Customizing the Flow

To customize the verification flow, you can simply make use of the sdk's builder class. All customization must be done before starting the flow.

```java
import com.orbaone.orba_one_capture_sdk_core.OrbaOne;
import com.orbaone.orba_one_capture_sdk_core.helpers.Step;

Step[] FlowStep = new Step[] {
  Step.INTRO, // Welcome step - gives your user a short overview of the flow. [Optional, Default].
  Step.ID, // Photo ID step - captures the user's identification document. [Default].
  Step.FACESCAN, // Selfie Video step - captures a video of the user for liveness detection. [Default].
  Step.COMPLETE // Final Step - informs the user that the verification process is completed. [Optional].
  };

OrbaOne oneSdk = new OrbaOne.Builder()
        .setApiKey("publishable-api-key")
        .setApplicantId("applicant-id")
        .setFlow(FlowStep)
        .create();
oneSdk.startVerification(this);
```

### 5. Customizing the Document Capture Step

To customize the document capture step, you can simply make use of the sdk's DocumentCaptureStep builder class. By using this builder class, you are able to exclude specified documents and countries from the capture flow. All customization must be done before starting the flow.

```
import com.orbaone.orba_one_capture_sdk_core.OrbaOne;
import com.orbaone.orba_one_capture_sdk_core.documentCapture.CountryCode;
import com.orbaone.orba_one_capture_sdk_core.documentCapture.DocumentCaptureStep;
import com.orbaone.orba_one_capture_sdk_core.helpers.DocumentTypes;

DocumentCaptureStep captureConfig = new DocumentCaptureStep.Builder()
        .excludeDocument(new DocumentTypes[]{
                DocumentTypes.PASSPORT, // this will remove the Passport option
                DocumentTypes.DRIVERSLICENSE, // this will remove the Driver's License option
                DocumentTypes.NATIONALID // this will remove the National ID option
        })
        .excludeCountry(new CountryCode[] {
                CountryCode.JM, // this will remove Jamaica from the list of available countries
                CountryCode.US // this will remove the United States from the list of available countries
        })
        .create();
OrbaOne oneSdk = new OrbaOne.Builder()
        .setApiKey("publishable-api-key")
        .setApplicantId("applicant-id")
        .setDocumentCapture(captureConfig)
        .create();
oneSdk.startVerification(this);
```

### 6. Customizing the Theme

To ensure that Orba One fits in to your app's existing user experience, you can customize various colors by overriding the following in your `colors.xml` file.

`orbaColorPrimary`: Defines the background color of the Toolbar.\
`orbaColorPrimaryDark`: Defines the background color of the Statusbar.\
`orbaColorAccent`: Defines the outline of the play button as well as other details found in alert dialogs.\
`orbaColorTextPrimary`: Defines the text color of the Title in the Toolbar.\
`orbaColorTextSecondary`: Defines the text color of the Sub-title in the Toolbar.\
`orbaColorButtonPrimary`: Defines the background color of Primary Buttons and the text color of Secondary Buttons.\
`orbaColorButtonPrimaryText`: Defines the text color of Primary Buttons.\
`orbaColorButtonPrimaryPressed`: Defines the background color of Primary Buttons when pressed.

### Sample App

A sample app demonstrating the Orba One SDK's implementation has been included. See the [AndroidSample directory](https://github.com/orbaone/orba-one-android-sdk/tree/master/AndroidSample) for the Android - Java implementation.

### Support

Please post all issues through [Github](https://github.com/orbaone/orba-one-android-sdk/issues). If your query involves sensitive information, you may contact us at <dev@orba.io> with the subject `ANDROID ISSUE:` .


# iOS

How to install Orba One's Document and Video Capture for Identity Verification in Swift/iOS.

### 1. Platform Requirements

The SDK supports the following configurations:

* Supports iOS 13+
* Supports Xcode 11.5+
* Supports the following presentation styles:
  * Fullscreen for iPhones
  * Fullscreen and Form Sheet for iPads

### 2. Install as a CocoaPod

To install the SDK using CocoaPods, add the following to the application's podfile:

```
pod 'OrbaOneSdk'
```

Then run `pod install` to retrieve the sdk.

### 3. App Permissions

The Orba One SDK requires that the following permissions be added to the application's `info.plist` file:

```
<key>NSCameraUsageDescription</key>
<string>Required for Facial and Document capture.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Required for Audio capture.</string>
```

### 4. Configuring the SDK

The Orba One SDK uses a **publishable api key** and an **applicant id** that you can obtain from your vendor dashboard. Your publishable api key will be needed in order to initialize the SDK in your mobile app. A sample implementation is shown below.

```swift
import OrbaOneSdk

let config = OrbaOneConfig().setApiKey("publishable-api-key").setApplicantId("applicant-id").setFlow([.INTRO, .ID, .FACESCAN]).build()
do {
    let sdk = try OrbaOneFlow(configuration: config).with(responseHandler: {response in
        switch response {
        case .success(let result):
            print("Flow completed successfully: \(result)")
        case .failure(let error):
            print("Flow cancelled by the user: \(error)")
        case .start:
            print("Flow started.")
        case .error(let error):
            print("Flow encounterd an error: \(error)")
        }
    })

    var presentationStyle: UIModalPresentationStyle = .fullScreen
            
    if UIDevice.current.userInterfaceIdiom == .pad {
        presentationStyle = .formSheet
    }
    
    try sdk.startVerification(origin: self, style: presentationStyle)
} catch let error {
    print("Flow not started. Error: \(error)")
}
```

### 5. SDK Responses

The Orba One SDK exposes four callbacks to the mobile app. Each can be used to coordinate user feedback at various stages of the SDK's lifecycle.

```swift
{response in
        switch response {
        case .success(let result):
            // The mobile app user has completed all the required steps and is returned to the view that initiated the SDK.
            print("Flow completed successfully: \(result)")
        case .failure(let error):
            // The mobile app user cancelled the verification flow by returning to view that initiated the SDK.
            print("Flow cancelled by the user: \(error)")
        case .start:
            // A new verification flow was started by the user.
            print("Flow started.")
        case .error(let error):
            // An error occured while the verification flow was in progress.
            switch error {
                case .exception(withMessage: let message):
                    print("\(message)")
                case .API_KEY_MISSING:
                    print("Publishable key missing.")
                case .API_KEY_INVALID:
                    print("Publishable key is invalid.")
                case .USER_INVALID:
                    print("Applicant id is invalid.")
                case .USER_CANCELLED:
                    print("Applicant cancelled verification.")
                case .API_NOT_AVAILABLE:
                    print("Orba One servers are unreachable.")
                case .UPLOAD_INVALID:
                    print("Upload data is corrupted or missing meta data.")
                @unknown default:
                    print("An unknown error occured.")
                }
        break;
        }
    }
```

### 6. Customizing the Flow

To customize the verification flow, you can make use of the SDK's config builder function. All customization must be done before starting the verification.

```swift
let flowSteps: [Step] = [
    Step.INTRO, // Welcome step - gives your user a short overview of the flow. [Optional, Default].
    Step.ID, // Photo ID step - captures the user's identification document. [Default].
    Step.FACESCAN, // Selfie Video step - captures a video of the user for liveness detection. [Default].
    Step.COMPLETE // Final Step - informs the user that the verification process is completed. [Optional].
]

let config = OrbaOneConfig().setApiKey("publishable-api-key").setApplicantId("applicant-id").setFlow(flowSteps).build()
let sdk = try OrbaOneFlow(configuration: config)
try sdk.startVerification(origin: self)
```

### 7. Customizing the Document Capture Step

To customize the document capture step, you can simply make use of the sdk's DocumentCaptureConfig builder class. By using this builder class, you are able to exclude specified documents and countries from the capture flow. All customization must be done before starting the flow.

```swift
let documentStep = DocumentCaptureConfig()
    .excludeDocument([
        .PASSPORT, // this will remove the Passport option
        .DRIVERSLICENSE, // this will remove the Driver's License option
        .NATIONALID // this will remove the National ID option
    ])
    .excludeCountry([
        .JM, // this will remove Jamaica from the list of available countries
        .US // this will remove the United States from the list of available countries
    ]).build()
let config = OrbaOneConfig()
    .setApiKey("publishable-api-key")
    .setApplicantId("applicant-id")
    .supportsDocument(documentStep)
    .build()
let sdk = try OrbaOneFlow(configuration: config)
try sdk.startVerification(origin: self)
```

### 8. Customizing the Theme

To ensure that Orba One fits in to your app's existing user experience, you can customize various colors by specifying a theme configuration.

```swift
let appearance = Theme(
    colorPrimary: <UIColor>,
    colorTextPrimary: <UIColor>,
    colorButtonPrimary: <UIColor>,
    colorButtonPrimaryText: <UIColor>,
    colorButtonPrimaryPressed: <UIColor>,
    enableDarkMode: <true | false>)

let config = OrbaOneConfig().setAppearance(appearance).build()
```

`colorPrimary`: Defines the primary accent color for bullet points and highlights.\
`colorTextPrimary`: Defines the text color of Titles.\
`colorButtonPrimary`: Defines the background color of Primary Buttons and the text color of Secondary Buttons.\
`colorButtonPrimaryText`: Defines the text color of Primary Buttons.\
`colorButtonPrimaryPressed`: Defines the background color of Primary Buttons when pressed.\
`enableDarkMode`: Defines the dark mode allowed setting for the SDK.

### Sample App

A sample app demonstrating the Orba One SDK's implementation has been included. See the [SampleApp directory](https://github.com/orbaone/orbaone-ios-sdk/tree/main/SampleApp) for the Swift implementation.

### Support

Please post all issues through [Github](https://github.com/orbaone/orbaone-ios-sdk/issues). If your query involves sensitive information, you may contact us at <dev@orba.io> with the subject `IOS ISSUE:` .


# React Native

This document explains how to integrate the Orba One authentication flow into your React Native application.

### 1. Installation

```
npm install @orbaone/react-native-orba-one
# OR
yarn add @orbaone/react-native-orba-one
```

### 2. Linking

Linking is automatic, however, you still need to perform a few steps for iOS.

#### iOS

The Orba One SDK requires that the following permissions be added to the application's `info.plist` file:

```
<key>NSCameraUsageDescription</key>
<string>Required for Facial and Document capture.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Required for Audio capture.</string>
```

* Ensure that `use_frameworks!` is added to your app target in your Podfile.
* Run `pod install` to retrieve the sdk.

#### Android

No additional setup is necessary.

### 3. Usage

```js
import { OrbaOne, OrbaOneConfig, OrbaOneFlowStep, OrbaOneDocuments } from '@orbaone/react-native-orba-one';
```

### 4. Starting the Verification Flow

```js
// Initializing the Flow with default settings
const init = await OrbaOne.init('publishable-api-key', 'applicant-id');
if(init.success) {
  console.log(init.message)  
} 

// Starting the Flow
const res = await OrbaOne.startVerification();
if(res.success) {
  console.log(res.message)  
} 
```

### 5. Adding Customizations

```js
// Customizing the Flow
const verificationConfig = OrbaOneConfig.setFlowSteps([
  OrbaOneFlowStep.intro, // Welcome step - gives your user a short overview of the flow. [Optional, Default].
  OrbaOneFlowStep.identification, // Photo ID step - captures the user's identification document. [Default].
  OrbaOneFlowStep.face, // Selfie Video step - captures a video of the user for liveness detection. [Default].
  OrbaOneFlowStep.complete // Final Step - informs the user that the verification process is completed. [Optional].
])
// Customizing the Theme
.setAppearance({
  colorPrimary: '#000000' <Hex String>,
  colorButtonPrimary: '#000000' <Hex String>,
  colorTextPrimary: '#000000' <Hex String>,
  colorButtonPrimaryPressed: '#000000' <Hex String>,
  enableDarkMode: true <Bool>
})
// Customizing the Document Capture Step
.setExcludeDocument([
  OrbaOneDocuments.passport, // this will remove the Passport option
  OrbaOneDocuments.driverslicense, // this will remove the Driver's License option
  OrbaOneDocuments.nationalid // this will remove the National ID option
])
// Customizing the Country List
.setExcludeCountry([
  'JM', // this will remove Jamaica from the list of available countries
  'US' // this will remove the United States from the list of available countries
])
.build();

const init = await OrbaOne.init('publishable-api-key', 'applicant-id', verificationConfig);
```

### 6. Handling Verifications

```js
componentDidMount() {
  OrbaOne.onCompleteVerification((event: any) => {
    console.log(event.authKey)
  });

  OrbaOne.onCancelVerification((event: any) => {
    console.log(event.message)
  });
}

componentWillUnmount = () => {
  OrbaOne.removeListeners();
};
```

### Troubleshooting

When installing or using `@orbaone/react-native-orba-one` you may encounter the following problems:

\[iOS] - If you are using `@react-native-firebase` in your project, along with `use_frameworks!`, you may encounter an error with `RNFirebase`. To avoid this, add `$RNFirebaseAsStaticFramework = true` at the top of your `Podfile`.

### Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.


# Endpoints

This document describes all the available endpoints for the Orba One API.

## Clients

Extend and build your own custom platform using Orba One's available endpoints. We currently offer a Node.js REST API client, available on [npm](https://www.npmjs.com/package/@orbaone/api).

{% hint style="info" %}
All API endpoints require the field `AuthKey` is present in the request header of each request. `AuthKey` is a combination of your `ApiKey and Secret` separated by a ':' and encoded in using base64 encoding.
{% endhint %}

Creating your `AuthKey` key header is simple and intuitive, simple and easy.&#x20;

1. Get your ApiKey and Secret from within your [dashboard](https://dashboard.orbaone.com/home/integration).
2. Concatenate both values separated by a colon `:`
3. Encode the resulting concatenation in base64.
4. Append the `AuthKey` field in your header request and send the encoded value.

{% hint style="info" %}
You can access your `ApiKey` and `Secret` from within your [dashboard](https://dashboard.orbaone.com).
{% endhint %}

## Create Applicant

<mark style="color:green;">`POST`</mark> `https://api.orbaone.com/api/v1/applicants/create`

This endpoint allows you to create an Applicant.

#### Request Body

| Name       | Type   | Description                    |
| ---------- | ------ | ------------------------------ |
| email      | string | Applicant's email, if provided |
| middleName | string | Middle name of the Applicant   |
| lastName   | string | Last name of the Applicant     |
| firstName  | string | First name of the Applicant    |

{% tabs %}
{% tab title="200 Applicant successfully created." %}

```javascript
{
  "isSuccessful": true,
  "data": {
    "id": "08d8cd40-11da-423c-8d56-e3a5f9f2b6e0",
    "email": null,
    "firstName": "John",
    "middleName": "",
    "lastName": "Brown",
    "thumbnailPath": "",
    "completed": false,
    "completedAt": "0001-01-01T00:00:00",
    "createdAt": "2021-02-09T21:17:13.4036674Z",
    "selfieDataId": null,
    "selfieTurnDirection": "right",
    "selfieData": null,
    "idDocumentDataId": null,
    "idDocumentData": null,
    "updatedAt": "2021-02-09T21:17:13.4037257Z",
    "vendorId": "08d8b75c-b964-4da8-8e05-205022297e35",
    "adminApprovalStatus": "pending",
    "adminApprovalDate": "0001-01-01T00:00:00",
    "vendorApprovalStatus": "pending",
    "vendorApprovalDate": "0001-01-01T00:00:00",
    "approvedByUser": null,
    "approvalScore": 0,
    "faceMatchScore": 0,
    "ipAddress": null,
    "deviceInfo": null
  },
  "errors": []
}
```

{% endtab %}
{% endtabs %}

## Get Applicants

<mark style="color:blue;">`GET`</mark> `https://api.orbaone.com/api/v1/applicants`

Get all the applicants

#### Query Parameters

| Name     | Type   | Description                                     |
| -------- | ------ | ----------------------------------------------- |
| search   | string | The search string to find a specific Applicant. |
| pageSize | number | Amount of applicants per page (default: 50)     |
| page     | number | Current page of applicants (default: 1)         |

{% tabs %}
{% tab title="200 " %}

```
{
  pageIndex: 1,
  totalPages: 0,
  totalItems: 0,
  items: [
    {
      adminApproval: "",
      adminApprovalDate: "",
      approvalScore: 0,
      completed: false,
      completedAt: "",
      createdAt: "",
      faceMatchScore: 0,
      idDocumentData: {
        authenticationScore: 0,
        backImageUrl: "",
        frontImageUrl: "",
        dateOfBirth: "",
        documentNumber: "",
        documentType: "",
        expirationDate: "",
        firstName: "",
        lastName: "",
        fullName: "",
        id: "",
        issueDate: "",
        issuingCountry: "",
        nationality: "",
        sex: "",
      },
      selfieCode: 0,
      selfieTurnDirection: "",
      selfieData: {
        id: "",
        nearImageUrl: "",
        thumbnailUrl: "",
        videoUrl: "",
      },
      email: "",
      firstName: "",
      middleName: "",
      lastName: "",
      thumbnailUrl: "",
      status: "",
      vendorApproval: "",
      vendorApprovalDate: "",
    },
  ],
  hasPreviousPage: false,
  hasNextPage: false,
}
```

{% endtab %}
{% endtabs %}

## Get an Applicant

<mark style="color:blue;">`GET`</mark> `https://api.orbaone.com/api/v1/applicants/<applicantId>`

This endpoint takes a unique `applicantId` and return the corresponding details.

#### Path Parameters

| Name        | Type   | Description                    |
| ----------- | ------ | ------------------------------ |
| applicantId | string | The unique ID of an Applicant. |

{% tabs %}
{% tab title="200 " %}

```
{
  adminApproval: "",
  adminApprovalDate: "",
  approvalScore: 0,
  completed: false,
  completedAt: "",
  createdAt: "",
  faceMatchScore: 0,
  idDocumentData: {
    authenticationScore: 0,
    backImageUrl: "",
    frontImageUrl: "",
    dateOfBirth: "",
    documentNumber: "",
    documentType: "",
    expirationDate: "",
    firstName: "",
    lastName: "",
    fullName: "",
    id: "",
    issueDate: "",
    issuingCountry: "",
    nationality: "",
    sex: ""
  },
  selfieCode: 0,
  selfieTurnDirection: "",
  selfieData: {
    id: "",
    nearImageUrl: "",
    thumbnailUrl: "",
    videoUrl: ""
  },
  email: "",
  firstName: "",
  middleName: "",
  lastName: "",
  thumbnailUrl: "",
  status: "",
  vendorApproval: "",
  vendorApprovalDate: ""
}
```

{% endtab %}
{% endtabs %}

## Reset an Applicant

<mark style="color:green;">`POST`</mark> `https://api.orbaone.com/api/v1/applicants/<applicantId>/reset`

This endpoint resets an applicant's state, commonly used for reauthentication.

#### Path Parameters

| Name        | Type   | Description                   |
| ----------- | ------ | ----------------------------- |
| applicantId | string | The unique ID of an Applicant |

{% tabs %}
{% tab title="200 " %}

```
{
    "isSuccessful": true,
    "data": {
        "id": "08d8d148-6ba3-490c-8615-fd65723f0aw2",
        "email": null,
        "firstName": "John",
        "middleName": "",
        "lastName": "Brown",
        "thumbnailPath": "",
        "completed": false,
        "completedAt": "0001-01-01T00:00:00",
        "createdAt": "2021-02-15T00:27:04.667389",
        "selfieDataId": "08d8d148-788f-46fa-8a6b-27480f1eb331",
        "selfieTurnDirection": "right",
        "selfieData": {
            "selfieType": 0,
            "thumbnailUrl": "",
            "videoUrl": "",
            "nearImageUrl": "",
            "farImageUrl": "",
            "createdAt": "2021-02-15T00:27:26.34442",
            "updatedAt": "2021-02-16T15:08:12.8089274Z"
        },
        "idDocumentDataId": null,
        "idDocumentData": null,
        "updatedAt": "2021-02-16T15:08:12.8067632Z",
        "vendorId": "08d8b75c-b964-4da8-8e05-205022297e35",
        "adminApprovalStatus": "pending",
        "adminApprovalDate": "0001-01-01T00:00:00",
        "vendorApprovalStatus": "pending",
        "vendorApprovalDate": "0001-01-01T00:00:00",
        "approvedByUser": null,
        "approvalScore": 0,
        "faceMatchScore": 0,
        "ipAddress": "1.2.3.4",
        "deviceInfo": ""
    },
    "errors": []
}
```

{% endtab %}
{% endtabs %}

## Create Applicant Verification Link

<mark style="color:blue;">`GET`</mark> `https://api.orbaone.com/api/v1/applicants/<applicantId>/verification_link`

Create a verification link for a given applicant

#### Path Parameters

| Name        | Type   | Description                   |
| ----------- | ------ | ----------------------------- |
| applicantId | string | The unique ID of an Applicant |

#### Query Parameters

| Name       | Type    | Description                                           |
| ---------- | ------- | ----------------------------------------------------- |
| regenerate | boolean | Boolean to determine if the link should be regenrated |

{% tabs %}
{% tab title="200 " %}

```
{
    "isSuccessful": true,
    "data": {
        "applicantId": "01d8cw84-1e24-4f02-837c-08626fd0c92f",
        "email": null,
        "url": "https://verify.orbaone.com/?magic=f0eb0f5e1a774a3096b8f36c0db85b846bcdd8a9f0cf4131bb20f48792abc0dc77c11b17024e42428511a00a73b8fa8a&publicKey=2af861789aa84aa68fd6bba19f7b589c&applicantId=08d8cd84-1e24-4f02-837c-08126fd0c92f"
    },
    "errors": []
}
```

{% endtab %}
{% endtabs %}

## Applicant PEP Scan

<mark style="color:blue;">`GET`</mark> `https://api.orbaone.com/api/v1/applicants/<applicantId>/pep`

This endpoint facilitates a Politically Exposed Person (PEP) scan on an Applicant.

#### Path Parameters

| Name        | Type   | Description                   |
| ----------- | ------ | ----------------------------- |
| applicantId | string | The unique ID of an Applicant |

{% tabs %}
{% tab title="200 This response shows a possible match for a Politically Exposed Person" %}

```
{
    "date": "2020-09-28T15:42:32.2620868+10:00",
    "scan_id": "s6227134",
    "number_of_matches": 1,
    "number_of_pep_matches": 1,
    "number_of_sip_matches": 0,
    "persons": [
        {
            "category": "PEP",
            "name": "Peter Bunting",
            "gender": "male",
            "reference_type": "PEP",
            "nationality": "",
            "citizenship": "",
            "places": [
                {
                    "country": "Jamaica",
                    "type": "Legislature"
                }
            ],
            "roles": [
                {
                    "title": "Member of House of Representatives (People's National Party)",
                    "since": "2012-01-17",
                    "to": "2016-02-25",
                    "type": ""
                },
                {
                    "title": "Member of House of Representatives (People's National Party)",
                    "since": "2016-03-10",
                    "type": ""
                }
            ],
            "identities": [
                {
                    "number": "peter_bunting",
                    "type": "EveryPolitician Legacy"
                }
            ],
            "images": [
                "http://jamaica-elections.com/general/2016/info/candidates_images/peter_bunting_pnp.jpg"
            ],
            "match_rate": 100.0
        }
    ]
}
```

{% endtab %}
{% endtabs %}

## Applicant Sanction Scan

<mark style="color:blue;">`GET`</mark> `https://api.orbaone.com/api/v1/applicants/<applicantId>/sanction`

This endpoint facilitates a Sanction scan on an Applicant.

#### Path Parameters

| Name        | Type   | Description                    |
| ----------- | ------ | ------------------------------ |
| applicantId | string | The unique ID of an Applicant. |

{% tabs %}
{% tab title="200 This response shows a possible match for a Sanction scan." %}

```

{
    "date": "2020-09-28T15:41:28.7270459+10:00",
    "scan_id": "s6227132",
    "number_of_matches": 2,
    "number_of_pep_matches": 0,
    "number_of_sip_matches": 2,
    "persons": [
        {
            "update_at": "2017-01-24T19:12:01+00:00",
            "category": "SIP",
            "name": "ROBERT WILLIAM FISHER",
            "gender": "Male",
            "dates_of_birth": [
                {
                    "date": "April 13, 1961"
                }
            ],
            "places_of_birth": [
                {
                    "text": "Brooklyn, New York"
                }
            ],
            "reference_type": "Sanction",
            "references": [
                {
                    "name": "US - Federal Bureau of Investigation (FBI) List",
                    "id_in_list": "da4fa184bbed15a4dc7524d0988d53c1"
                }
            ],
            "nationality": "American",
            "citizenship": "",
            "other_names": [
                {
                    "name": "Robert W. Fisher",
                    "type": ""
                }
            ],
            "images": [
                "https://www.fbi.gov/wanted/topten/robert-william-fisher/@@images/image/thumb",
                "https://www.fbi.gov/wanted/topten/robert-william-fisher/fisher2bw.jpg/@@images/image/thumb",
                "https://www.fbi.gov/wanted/topten/robert-william-fisher/longhairwithbeard.jpg/@@images/image/thumb",
                "https://www.fbi.gov/wanted/topten/robert-william-fisher/shorthairnobeard.jpg/@@images/image/thumb",
                "https://www.fbi.gov/wanted/topten/robert-william-fisher/longhairwithgoatee.jpg/@@images/image/thumb",
                "https://www.fbi.gov/wanted/topten/robert-william-fisher/baldlongbeard.jpg/@@images/image/thumb",
                "https://www.fbi.gov/wanted/topten/robert-william-fisher/shorthairandgoatee.jpg/@@images/image/thumb",
                "https://www.fbi.gov/wanted/topten/robert-william-fisher/longhairnobeard.jpg/@@images/image/thumb",
                "https://www.fbi.gov/wanted/topten/robert-william-fisher/shorthairandbeard.jpg/@@images/image/thumb",
                "https://www.fbi.gov/wanted/topten/robert-william-fisher/baldnobeard.jpg/@@images/image/thumb",
                "https://www.fbi.gov/wanted/topten/robert-william-fisher/fisher5bw.jpg/@@images/image/thumb"
            ],
            "sources": [
                "https://www.fbi.gov/wanted/topten/robert-william-fisher/download.pdf"
            ],
            "summary": "Eyes: blue;\nHair: brown;\nBuild: Medium;\nRace: white;\nWeight: 190 Pounds;\nHeight: 72 Inches;\nDescription: Unlawful Flight to Avoid Prosecution - First Degree Murder (3 Counts), Arson of an Occupied Structure;\nWarning: SHOULD BE CONSIDERED ARMED AND EXTREMELY DANGEROUS;\nReward: The FBI is offering a reward of up to $100,000 for information leading directly to the arrest of Robert William Fisher.;\nField Offices: phoenix;\nOccupations: Surgical Catheter Technician, Respiratory Therapist, Fireman;\nPossible Countries: USA;\nScars and Marks: Fisher has surgical scars on his lower back.;\n[Remarks]: Fisher is physically fit and is an avid outdoorsman, hunter, and fisherman. He has a noticeable gold crown on his upper left first bicuspid tooth. He may walk with an exaggerated erect posture and his chest pushed out due to a lower back injury. Fisher is known to chew tobacco heavily. He has ties to New Mexico and Florida. Fisher is believed to be in possession of several weapons, including a high-powered rifle.;\n[Caution]: Robert William Fisher is wanted for allegedly killing his wife and two young children and then blowing up the house in which they all lived in Scottsdale, Arizona, in April of 2001.",
            "match_rate": 100.0
        },
        {
            "category": "SIP",
            "name": "FISHER, ROBERT WILLIAM",
            "first_name": "ROBERT WILLIAM",
            "last_name": "FISHER",
            "gender": "Male",
            "dates_of_birth": [
                {
                    "date": "1961/04/13"
                }
            ],
            "places_of_birth": [
                {
                    "text": "Tucson, Arizona, United States"
                }
            ],
            "reference_type": "Sanction",
            "references": [
                {
                    "name": "Interpol Wanted List",
                    "id_in_list": "2002/3398"
                }
            ],
            "nationality": "United States",
            "citizenship": "",
            "images": [
                "https://ws-public.interpol.int/notices/v1/red/2002-3398/images/60039342",
                "https://ws-public.interpol.int/notices/v1/red/2002-3398/images/60039344",
                "https://ws-public.interpol.int/notices/v1/red/2002-3398/images/60039346",
                "https://ws-public.interpol.int/notices/v1/red/2002-3398/images/60039348",
                "https://ws-public.interpol.int/notices/v1/red/2002-3398/images/60039358",
                "https://ws-public.interpol.int/notices/v1/red/2002-3398/images/60039360",
                "https://ws-public.interpol.int/notices/v1/red/2002-3398/images/60039376",
                "https://ws-public.interpol.int/notices/v1/red/2002-3398/images/60039378",
                "https://ws-public.interpol.int/notices/v1/red/2002-3398/images/60039380",
                "https://ws-public.interpol.int/notices/v1/red/2002-3398/images/60039382",
                "https://ws-public.interpol.int/notices/v1/red/2002-3398/images/60039384"
            ],
            "sources": [
                "https://ws-public.interpol.int/notices/v1/red/2002-3398"
            ],
            "summary": "Reason: Wanted By United States;\nHeight: 1.83 metres;\nWeight: 86 kilograms;\nColour of eyes: Blue;\nColour of hair: Brown;\nLanguage Spoken: English;\nCharges: First degree murder (3 counts);  arson of an occupied structure;\nDistinguishing marks and characteristics: Surgical scar on lower back;  gold crown on upper left first bicuspid",
            "match_rate": 83.0
        }
    ]
}
```

{% endtab %}
{% endtabs %}

## Create OCR Scan for document

<mark style="color:green;">`POST`</mark> `https://api.orbaone.com/api/v1/scans/ocr`

This endpoint facilitates an Optical Character Recognition (OCR) scan for a document.

#### Request Body

| Name                                                 | Type   | Description                                                 |
| ---------------------------------------------------- | ------ | ----------------------------------------------------------- |
| referenceId                                          | String | A ID or name used to retrieve a scanned document            |
| documentType<mark style="color:red;">\*</mark>       | String | The type of document being scanned                          |
| documentSide                                         | String | The side of the document being scanned                      |
| issuingCountryCode<mark style="color:red;">\*</mark> | String | The country code for the country the document was issued in |
| documentImage<mark style="color:red;">\*</mark>      | Image  | An image of the document to be scanned                      |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Get OCR Scanned documents

<mark style="color:blue;">`GET`</mark> `https://api.orbaone.com/api/v1/scans/ocr`

The endpoint gets all the OCR scanned documents.

#### Query Parameters

| Name        | Type   | Description                                            |
| ----------- | ------ | ------------------------------------------------------ |
| referenceId | String | An ID or name used to retrieve scanned document        |
| dateFrom    | Date   | Returns scanned documents starting from this date      |
| dateTo      | Date   | Returns scanned documents up to this date              |
| pageNumber  | Number | The current page of the scanned documents (default: 1) |
| pageSize    | Number | The number of scanned documents per page               |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Get an OCR Scanned document

<mark style="color:blue;">`GET`</mark> `https://api.orbaone.com/api/v1/scans/ocr/<id>`

This endpoint takes a unique `id` and returns the corresponding data.

#### Path Parameters

| Name                                 | Type | Description                          |
| ------------------------------------ | ---- | ------------------------------------ |
| id<mark style="color:red;">\*</mark> | UUID | The unique id for a scanned document |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Create face comparison

<mark style="color:green;">`POST`</mark> `https://api.orbaone.com/api/v1/scans/facematch`

This endpoint facilitates a face comparison for a document

#### Request Body

| Name                                                 | Type   | Description                                                 |
| ---------------------------------------------------- | ------ | ----------------------------------------------------------- |
| referenceId                                          | String | An ID or name used to retrieve face comparison              |
| documentType<mark style="color:red;">\*</mark>       | String | The type of document being scanned                          |
| documentSide                                         | String | The side of the document being scanned                      |
| issuingCountryCode<mark style="color:red;">\*</mark> | String | The country code for the country the document was issued in |
| documentImage<mark style="color:red;">\*</mark>      | Image  | An image of the document                                    |
| selfieImage<mark style="color:red;">\*</mark>        | Image  | An image of the owner of the document                       |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Get face comparisons

<mark style="color:blue;">`GET`</mark> `https://api.orbaone.com/api/v1/scans/facematch`

This endpoints gets all the face comparisons

#### Query Parameters

| Name        | Type   | Description                                           |
| ----------- | ------ | ----------------------------------------------------- |
| referenceId | String | An ID or name used to retrieve face comparison        |
| dateFrom    | Date   | Returns face comparisons starting from this date      |
| dateTo      | Date   | Returns face comparisons up to this date              |
| pageNumber  | Number | The current page of the face comparisons (default: 1) |
| pageSize    | Number | The number of the face comparisons per page           |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

## Get a face comparison

<mark style="color:blue;">`GET`</mark> `https://api.orbaone.com/api/v1/scans/facematch/<id>`

This endpoint takes a unique `id` and returns the corresponding data.

#### Path Parameters

| Name | Type | Description                         |
| ---- | ---- | ----------------------------------- |
| id   | UUID | The unique ID for a face comparison |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}


# Privacy Policy

How Orba One handles any customer, client or employee information gathered in our operations.

**At Orba One, we’re creating a more inclusive world, where identity inclusion is the key to access. We help our clients enable their users to access services quickly, easily—and most important of all—securely. The information we collect and use helps us with that mission—and that’s it. No surprises.**

At Orba One, when we verify an identity or carry out checks related to an identity (our “​Identity Services​”), we’re committed to protecting the privacy and security of that identity. This Privacy Policy is meant to help you understand how we use the information we collect to provide our Identity Services on behalf of our clients and build trust in our system.

For information about how your specific data is being collected and used, please review the privacy policy of our client who is using our Identity Services with you.

We may need to update this Privacy Policy from time to time, so we recommend you check back periodically If we make any substantial changes, we may notify you via email or by posting a notice on our website.

## The Information We Collect and the Orba One Identity Lifecycle

To provide our Identity Services, we need to collect certain information about our clients’ users. The exact information needed depends on the check that’s being carried out on behalf of our client. For example, when verifying the identity of a user, we’ll ask for an image of their identity document as well as a picture or video of their face. We’ll then seek to verify whether the identity document is likely to be genuine and whether the person in the photo or video is likely the same person pictured in the identity document. We will also look to identify signs of fraud (for example, someone wearing a mask to impersonate another person or to conceal their own real identity). If the user is successful on both the document and facial verification checks, Orba One’s client will likely consider the user to have proven their identity.

In some cases, we may also further check whether we have previously verified a user on behalf of a specific client by comparing the picture of their face to the pictures previously provided by that client. This helps our clients not only verify identity but further protects them and their users by helping them understand when a user may be generating multiple identities.

To do all of this, we closely examine the information contained in the images, including the machine-readable data (such as an identity document’s barcode) and the image metadata (such as the name of the camera model used to take the image).

The Orba One Identity Lifecycle below shows you how we collect that information

![](/files/-MU8ThuBhqyv1727UcHi)

1. **The Client**

   Clients are organizations that have asked Orba One to verify an identity or carry out checks related to that identity. Once we have verified an identity or run a check, we share the results with the client in an Orba One Report, as described further below. The client then decides how they want to proceed with the user based on the results. In some cases, the client might ask for additional information before making a decision. Also, some clients only ask us to carry out a check if an earlier check was passed or not passed. This ensures we only do the minimum number of checks needed.<br>
2. **The User**\
   Users are individuals whose identities we verify or otherwise check on behalf of our clients. We collect users’ information from clients or directly from the users themselves. This information might include an image of an identity document (e.g. a passport or a driver's license), photos (at times, taken in quick succession for anti-fraud purposes) or a video of the user, and the biometric facial identifiers in those images. This enables us to help the client verify that the user is the true owner of the identity document and has not shown signs of fraud. In some circumstances, we may also collect device identifiers to help us understand whether a device has previously been used in relation to suspected fraudulent activity. Similarly, we also collect identity information that has been leaked or otherwise made available on the internet to further combat fraud. Lastly, we will briefly collect (but not retain) IP addresses to determine the city and country in which a user is located so that we may provide them with a localized service, where required to meet our legal obligations.<br>
3. **Data Providers**\
   Data providers are used to provide additional information to carry out specific checks. For example, if we need to verify a user’s Tax registration number, we might ask for additional information from the appropriate governmental driving body. We also keep logs of how our clients, users, and data providers interact with our Identity Services. This might include timestamps of when the information was submitted to Orba One, and information about the device used to submit that information.\
   Sometimes, we receive information we don’t need to provide our Identity Services. For example, instead of a picture of their identity document, a user might upload a completely unrelated image. When this happens, we seek to delete this data.

## Using Information for our Identity Services

**Passing an Orba One Check**

If we’re able to verify the identity of a user and the user is able to pass all requested checks, we notify the client who can then continue with their onboarding process.

**Not Passing the Orba One Check**

If we’re unable to verify the identity of a user or the user isn’t able to pass all requested checks, we recommend to the client that they conduct additional checks before continuing with the onboarding process. We sometimes help with those additional checks too.

**Developing Our Identity Services**

To further develop our Identity Services, we train our computers to recognize specific patterns in the information and make predictions about new sets of information based on those patterns. This is known as machine learning. We’ve gathered a substantial and unique set of images from around the world, from which we can train our machine learning models to locate and extract the information in documents, detect fraudulent documents, and engage in facial verification. We also train our human analysts to perform those tasks so they can assist when our machine learning models aren’t best suited for the task or are still learning. Sometimes, we’ll also re-run and re-submit checks to ensure our Identity Services are working properly, particularly when testing a new feature or service for quality assurance. Together, these developments help make Orba One’s Identity Services stronger and safer for all clients and users. We use the information to provide and maintain our Identity Services on behalf of clients on the basis that the user has consented to the processing or otherwise requested Identity Services, the client has a legitimate or lawful reason for requesting Identity Services, or the processing is necessary to carry out a task in the public interest or for reasons of substantial public interest. We also use the information to further develop our Identity Services on the basis that the processing is necessary for the legitimate interest of the client or Orba One’s, the processing is necessary to carry out a task in the public interest or for reasons of substantial public interest, the processing is necessary for scientific research purposes, or the user has provided their consent.

## Facial Biometric Comparision

When providing our Identity Services, we will frequently extract and compare numerical biometric data from facial images to understand whether two faces are likely to be a match. We do this on behalf of our clients for two reasons. Primarily, we will check whether a user owns their identity document by comparing an image of their face to the facial image contained in the identity document. We will also check whether those facial images show signs of fraud - for example, by comparing a person’s numerical biometric data to those of known masks. When we do this, we do not retain the extracted numerical biometric data for any length of time beyond this comparison. In addition, we may also check whether we have previously verified a user on behalf of a specific client to help that client understand when a user may be generating multiple identities. We do this by comparing the facial image of a user to the facial images of other users previously verified on behalf of that specific client. To provide this check quickly, we store the numerical biometric data extracted from the previously collected facial images until the client deletes those original images.

## Automated Decision Making and Orba One Reports

When we verify an identity or carry out a check on behalf of a client, we provide an Orba One Report to that client. This Orba One Report details our recommendation and the reasoning behind it. The reasons are generated from the different machine learning models and human-powered processes that are used to verify an identity or perform a check. By providing our clients with these detailed Orba One Reports, our aim is to empower our clients to make informed decisions about users and to provide specific help to users that are having difficulty in passing an Orba One check.

## Information Security

Orba One takes appropriate administrative, physical, technical and organizational measures designed to help protect information about users from loss, theft, misuse and unauthorized access, disclosure, alteration and destruction. For more information about information security at Orba One, please see our security document. If you think you have identified a security vulnerability or bug in our Identity Services, please report it to the Orba One security team at **<security@orbaone.com>.**

## **Data Storage**

We perform our Identity Services on behalf of our clients for a variety of different reasons. Those reasons are identified by our clients, and we rely on them to tell us when they no longer need us to store the information we’ve collected on their behalf. Once instructed, either through our agreement with the client or through an ad hoc request, we delete the information we have collected about users when performing the requested Identity Services. If you, as a user, would like to make a specific request to have your information deleted, please make that request directly to the client that carried out your related check. For more information about how to do this, please see below under “Your Rights”. Where we have a legitimate legal reason, we may also store information for longer than described above – for example, where we are under a binding legal order not to destroy information.

## Your Rights

If you would like to access a copy of your information, have your information deleted, or otherwise exercise control over how your information is used, please contact Orba One at **<privacy@orbaone.com>**. Please be aware, most requests may require us to notify the relevant client (as described above in the Orba One Identity Lifecycle) so the client may fulfill the request instead (and not Orba One). This is necessary where Orba One is acting on the client’s behalf.

## Government and Law Enforcement Requests

As Orba One provides its Identity Services on behalf of its clients, Orba One will not disclose any information related to a specific check pursuant to a government or law enforcement request unless there is a binding legal order to do so or our client has consented to the disclosure. This is necessary for us to comply with our legal obligations. Any government or law enforcement body requesting information related to a specific check may contact us at **<privacy@orbaone.com>**, and we will seek to put you in contact with the relevant client.


# FAQs

### How will the data collected from ORBA One be represented?&#x20;

ORBA One doesn't govern how your business wants to represent the data. The system is designed to provide you with full autonomy/flexibility to manage your users' data.

### How long does ORBA One store the data?&#x20;

The data expires within 30 days.

### Can ORBA One be integrated into other systems?&#x20;

ORBA One can be integrated into other systems because it is built firstly as an API - (Application Processing Interface) - as - a - Service.

### Can the businesses assign risk parameters in the ORBA One system?&#x20;

Yes, ORBA One allows you to set your own risk parameters.


# Identity Verification

### **What types of identification does ORBA One accept?**&#x20;

&#x20;ORBA One accepts over 800 government issued IDs including passports, driver's license, national IDs and voter IDs.

### How does ORBA One scan a user's ID?

&#x20; ORBA One uses Optical Character Reader (OCR) Technology to capture a user's information from their ID.

### Does the format of the ID impact the ability of ORBA One's system to read and convert the information in a suitable format for the entity's core system that is being populated?

&#x20;ORBA One is format - agnostic therefore, the Optical Character Reader Technology (OCR) has the ability to read and format the information correctly. Our solution also reads IDs in different languages; however, international IDs must be a government issued ID. In the event of an anomaly, our machine learning algorithms can add additional documents.

### Does ORBA One prevent duplication?

Orba One does not flag duplicates, it however does not allow the same applicant, once approved to be onboarded again.

### How accurate is ORBA One in capturing data from a user's ID?&#x20;

&#x20;ORBA One assures 99% accuracy. It doesn't allow the user to proceed unless the ID is properly scanned. This ensures the information captured is from the highest quality document.

### Does ORBA One flag expired IDs?&#x20;

ORBA One verifies the user only after they have the Liveness Detection Test; however, the system delivers a warning that the document has expired.

### How does ORBA One check for fraudulent documents/How can fraudulent documents be detected?&#x20;

&#x20;ORBA One has fraud detection algorithms that do shadow checks. We assure up to 98% accuracy for these checks.


# Facial Biometrics

### What type of biometric does the ORBA One use?&#x20;

ORBA One does deep facial analysis when the end-user/customer does the Liveness Detection Test.

### What does the facial match score represent?&#x20;

The facial match score is the percentage match between the end user's facial biometrics (using facial comparison technology) and their ID. Entities can do their own risk-based assessment based on this score, as well as, ORBA One allows entities to set automated verification thresholds.


# PEP and Sanction List

### How does ORBA One work with the Sanction and PEP (Politically Exposed Persons) Scans?&#x20;

&#x20;ORBA One does not maintain these lists instead, we connect with partners such as World Check through their APIs. These lists are updated daily, therefore you have access to the most current lists once we provide your API.

### What data is the PEP Scan matching against?&#x20;

The PEP (Politically Exposed Person) Scan matches against a users' name and date of birth. After doing the scan, we return a match list and a match rate. A lower match rate means that multiple results have been returned.


# Glossary of Terms

**Anti - Money Laundering (AML)** - Anti-Money Laundering (AML) is a set of policies, procedures, and technologies that are implemented in government systems and institutions to monitor potentially fraudulent activity. ORBA One has built - in AML screenings to help your business mitigate fraud risks.

**Application Programming Interface (API)** - An API is a software intermediary that allows two applications to communicate and exchange information.

**Developer Driven** - An approach to building software tools and software interfaces that makes it easy for developers to use.

**Endpoint** - An endpoint can either be a source of retrieving or sending data over the Internet via a specific method, which is normally a Hypertext Transfer Protocol (HTTP) request. The ORBA One platform provides endpoints to retrieve or send applicant data to and from our customers and their respective integrations.

**Know Your Customer (KYC)** - The know your customer or know your client guidelines in financial services and other industries, requires professionals and business entities to verify the identity, suitability, and risks involved with maintaining a business relationship with their clients. This exists in the ORBA One ecosystem in the form of identity verification, address verification and anti-money laundering screenings.

**Liveness Detection** - Liveness detection is a mechanism that uses biometric technology to decipher live facial features from a fake representation. ORBA One prompts users to do a liveness detection test to verify if they're a real person.

**Optical Character Recognition** - Optical Character Recognition is the process of reading and examining printed or handwritten text and translating the characters into code used for data processing. It is also known as text recognition.

**Politically Exposed Person (PEP)** - A Politically Exposed Person (PEP) is an individual with a high profile political role, or who is promiment in the public domain. They present a higher risk for money laundering and/or terrorist financing activities because of their position.

**RegTech** - Coined by Deloitte, RegTech is a niche of the FinTech industry which involves “the use of new technologies to solve regulatory and compliance requirements more effectively and efficiently.” — The Institute of International Finance, 2016

**Sanction** - A sanction is a penalty imposed on an individual or institution due to non - compliance with laws and regulations/non - compliant activities. A sanction is typically stipulated by governments and international organizations.

**Sanction List** - Governments and international authorities publish sanction lists to identify individuals, organizations and governments engaged in illegal activities. These high risk parties are controlled by regulatory bodies.

**SDK Integration** - SDK Integration is a set of tools provided by software engineers that allows third party Software Engineers to build on top of existing tools. In ORBA One's context, our software engineers provide an SDK for various platforms such as Android, Web and iOS that allows third party software engineers to use and build their company's solution on/around the ORBA One platform.

**Seamless Integration** - Seamless Integration is the process of having two or more software systems exchange data or work in unison without introducing system-wide changes to either. ORBA One seamlessly integrates into your organization's existing platform to onboard customers anytime, anywhere at scale.

**Real-Time Identity** - Real-time Identity resolution is the process of creating a unified customer profile within seconds using identifiers such as name, email, address, phone, and device ID. ORBA One's real time identity resolution derives instantaneous customer identity through it's onboarding application.

**Webhook** - A webhook is an application programming interface (API) that allows an application to provide another application with real - time information.


