Flow Remote
Flow Remote API#
Flow Remote API - это способ подключения модулей биометрии с использованием frontend-клиента от Biometric.Vision.
Frontend - это интерфейс, с которым взаимодействует пользователь. В случае с сайтом, его формирует и выводит на экран браузер, который работает на HTML, CSS и JavaScript.
Данный способ интеграции предполагает получение сессии по созданному флоу и последующее перенаправление пользователя на frontend-клиент Biometric.Vision.
Набор инструментов разработки для Android можно найти здесь.
Этапы:#
1. Создание Flow#
Первым делом необходимо создать Flow в личном кабинете. Для этого перейдите по данной ссылке.
После того, как вы создали свой первый флоу и подключили к нему необходимые модули, вам необходимо воспользоваться вашим уникальным
API KEY
на втором этапе. Найти API KEY
можно на странице со
списком созданных флоу.
Упрощенный пример таблицы flows личного кабинета:
Наименование флоу | API KEY | Технологии |
---|---|---|
Флоу для всех | TTpme201NiUMBA... | LD, F2F |
Флоу для физ. лиц | Efy202XKbVAWRu... | LD, ED, F2F |
Флоу для юр. лиц | UuuH4V1XC-M9je... | LD, DR, F2F |
Примечание
В последующих примерах будет использоваться первый флоу из таблицы выше: "Флоу для всех".
Также, для наглядности используется укороченная длина
API KEY
. Его фактическая длина состовляет 47 и более символов.
2. Создание Сессии#
Для работы с сервисом нужно создать сессию.
Для этого необходимо отправить POST
-запрос на создание сессии, используя
API KEY
созданного flow.
Сессия - это период времени, в течение которого пользователь взаимодействует с системой или программным приложением. Во время сессии пользователь может выполнять различные операции, вводить данные, просматривать информацию и использовать функциональность системы. Система сохраняет информацию о действиях пользователя, чтобы обеспечить последовательность и согласованность операций.
Время жизни сессии при прохождении биометрической проверки - не более 10 минут.
В запросах к нашему сервису используются только данные в формате JSON. Ответные данные от сервиса будут представлены в том же формате.
URL запроса:
https://kyc.biometric.kz/api/v1/flows/session/create/
Формат запроса | Метод запроса |
---|---|
JSON | POST |
API KEY
необходимо передать в теле запроса:
Наименование поля | Тип | Обязательно | Описание |
---|---|---|---|
api_key | String | Да | API KEY созданного flow в личном кабинете |
Примеры запроса:
const apiKey: string = 'YOUR_FLOW_API_KEY' // flow api key
interface SessionResponseData {
session_id: string,
technologies: string[]
}
fetch('https://kyc.biometric.kz/api/v1/flows/session/create/', {
method: 'POST',
body: JSON.stringify({
api_key: apiKey
})
})
.then(response => response.json())
.then(data => {
const { session_id, technologies }: SessionResponseData = data
})
В качестве ответа придет JSON со следующими полями:
- session_id - одноразовый идентификатор сессии для прохождения flow;
- technologies - упорядоченный набор технологий flow.
Пример ответа:
Также, необходимо указать метод биометрии в качестве URL-пути.
3. Метаданные Сессии#
При создании флоу можно включить определенные метаданные, которые способствуют созданию более гибкого и динамичного процесса, а также упрощают процедуру верификации.
API KEY
и metadata
необходимо передать в теле запроса. Значением для metadata
является объект который включает в себя объект c названием технологии (face2face
, edocument
)
состоящий из метаданных для технологии.
Наименование поля | Тип | Обязательно | Описание |
---|---|---|---|
api_key | String | Да | API KEY созданного flow в личном кабинете |
metadata | Нет | Метаданные сесии |
Метаданные для технологии Face2Face:
Наименование поля | Тип | Обязательно | Описание |
---|---|---|---|
face2face | Нет | Метаданные для технологии Face2Face | |
photo1 | String | Нет | Фотография, используемая для сличения в формате base64 |
Метаданные для технологии E-Document:
Наименование поля | Тип | Обязательно | Описание |
---|---|---|---|
edocument | Нет | Метаданные для технологии E-Document | |
iin | Нет | Поле ИИН | |
phone | Нет | Поле Телефона субъекта | |
value | String | Нет | Значение полей |
changeable | Boolean | Нет | Возможность изменить данные пользователем |
skip_input | Boolean | Нет | Пропустить ввод данных пользователем (Перейти на шаг ввода OTP-кода) |
Общие метаданные:
Наименование поля | Тип | Обязательно | Описание |
---|---|---|---|
general | Нет | Общие метаданные | |
interchangeable_tech | Array | Нет | Список взаимозаменяемых технологий |
Примечание
Если метаданные отсутствуют, то флоу будет протекать по умолчанию.
3.1. Метаданные для Face2Face#
При наличии фотографии лица пользователя, есть возможность передавать фотографию в метаданных сесии.
Это позволяет упростить и сократить процесс верификации и предотвратить ошибки, которые могли бы возникнуть при
прохождении верификации пользователем.
Необходимо передавать в теле запроса поле metadata
.
Необходимо учесть
Метаданные технологии Face2Face будут работать только для следующих флоу:
- Liveness + Face2Face
- E-Docuemnt + Face2Face
- Document Recognition + Face2Face
Наименование поля | Тип | Обязательно | Описание |
---|---|---|---|
face2face | Нет | Метаданные для технологии Face2Face | |
photo1 | String | Нет | Фотография, используемая для сличения в формате base64 |
URL запроса:
https://kyc.biometric.kz/api/v1/flows/session/create/
Формат запроса | Метод запроса |
---|---|
JSON | POST |
Примеры запроса:
import requests
import json
import base64
url = "https://kyc.biometric.kz/api/v1/flows/session/create/"
with open('path/to/your/image.jpg', 'rb') as image_file:
encoded_image = base64.b64encode(image_file.read()).decode('utf-8')
payload = json.dumps({
"api_key": "YOUR_FLOW_API_KEY",
"metadata": {
"face2face": {
"photo1": encoded_image,
},
},
})
headers = {
'Content-Type': 'application/json',
}
response = requests.post(url=url, headers=headers, data=payload)
print(response.json())
const apiKey = 'YOUR_FLOW_API_KEY';
const imageFilePath = 'path/to/your/image.jpg'; // Путь к вашему изображению
const fs = require('fs');
const path = require('path');
const imageBase64 = fs.readFileSync(path.resolve(imageFilePath), { encoding: 'base64' });
const payload = {
api_key: apiKey,
metadata: {
face2face: {
photo1: imageBase64
}
}
};
fetch('https://kyc.biometric.kz/api/v1/flows/session/create/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => {
const { session_id, technologies } = data;
})
В качестве ответа придет JSON со следующими полями:
- session_id - одноразовый идентификатор сессии для прохождения flow;
- technologies - упорядоченный набор технологий flow.
Пример ответа:
3.2. Метаданные для E-Document#
При наличии таких данных о пользователе, как ИИН, номер телефона, наличие в Базе Мобильных Граждан.
Есть возможность передать их на форму ввода при прохождении технологии EDocument.
Это позволяет упростить и сократить процесс верификации и предотвратить ошибки, которые могли бы возникнуть при вводе данных пользователем.
Необходимо передавать в теле запроса поле metadata
.
Примечание
Поле skip_input
по умолчанию имеет значение false. (Шаг ввода данных не пропускается)
Поле changeable
по умолчанию имеет значение true. (Пользователь может изменить значения поля ввода данных)
Наименование поля | Тип | Обязательно | Описание |
---|---|---|---|
edocument | Нет | Метаданные для технологии E-Document | |
iin | Нет | Поле ИИН | |
phone | Нет | Поле Телефона субъекта | |
value | String | Нет | Значение полей |
changeable | Boolean | Нет | Возможность изменить данные пользователем |
skip_input | Boolean | Нет | Пропустить ввод данных пользователем |
URL запроса:
https://kyc.biometric.kz/api/v1/flows/session/create/
Формат запроса | Метод запроса |
---|---|
JSON | POST |
Case №1:
Примечание
Пропустить шаг ввода данных для пользователя, возможно только если:
1) Был передан value
для iin
и phone
2) Был передан changeable
для iin
и phone
со значением false
3) Был передан skip_input
со значением true
У пользователя будет пропущен шаг ввода данных. Пользователь будет перенаправлен на шаг ввода OTP-кода от 1414.
curl --location --request POST 'https://kyc.biometric.kz/api/v1/flows/session/create/' \
--header 'Content-Type: application/json' \
--data-raw '{
"api_key": "YOUR_FLOW_API_KEY",
"metadata": {
"edocument": {
"iin": {
"value": "<subjects_iin>",
"changeable": false,
},
"phone": {
"value": "<subjects_phone>",
"changeable": false,
},
"skip_input": true
}
}
}'
import requests
import json
url = "https://kyc.biometric.kz/api/v1/flows/session/create/"
payload = json.dumps({
"api_key": "YOUR_FLOW_API_KEY",
"metadata": {
"edocument": {
"iin": {
"value": "<subjects_iin>",
"changeable": False,
},
"phone": {
"value": "<subjects_phone>",
"changeable": False,
},
"skip_input": True
},
})
headers = {
'Content-Type': 'application/json',
}
response = requests.post(url=url, headers=headers, data=payload)
print(response.json())
const apiKey = 'YOUR_FLOW_API_KEY'; // Ключ API вашего процесса
const subjectsIIN = '123456789012'; // Пример ИИН пользователя
const subjectsPhone = '+1234567890'; // Пример номера телефона пользователя
fetch('https://kyc.biometric.kz/api/v1/flows/session/create/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
api_key: apiKey,
metadata: {
edocument: {
iin: {
value: subjectsIIN,
changeable: false,
},
phone: {
value: subjectsPhone,
changeable: false,
},
skip_input: true
}
}
})
})
.then(response => response.json())
.then(data => {
const { session_id, technologies } = data;
})
Case №2:
У пользователя на шаге ввода данных в полях ввода будут значения переданные в metadata
, без возможности изменить ИИН.
Примечание
У changeable
по умолчанию значение true.
У skip_input
по умолчанию значение false.
curl --location --request POST 'https://kyc.biometric.kz/api/v1/flows/session/create/' \
--header 'Content-Type: application/json' \
--data-raw '{
"api_key": "YOUR_FLOW_API_KEY",
"metadata": {
"edocument": {
"iin": {
"value": "<subjects_iin>",
"changeable": false,
},
"phone": {
"value": "<subjects_phone>",
}
}
}
}'
import requests
import json
url = "https://kyc.biometric.kz/api/v1/flows/session/create/"
payload = json.dumps({
"api_key": "YOUR_FLOW_API_KEY",
"metadata": {
"edocument": {
"iin": {
"value": "<subjects_iin>",
"changeable": False,
},
"phone": {
"value": "<subjects_phone>",
},
},
})
headers = {
'Content-Type': 'application/json',
}
response = requests.post(url=url, headers=headers, data=payload)
print(response.json())
const apiKey = 'YOUR_FLOW_API_KEY'; // Ключ API вашего процесса
const subjectsIIN = '123456789012'; // Пример ИИН пользователя
const subjectsPhone = '+1234567890'; // Пример номера телефона пользователя
fetch('https://kyc.biometric.kz/api/v1/flows/session/create/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
api_key: apiKey,
metadata: {
edocument: {
iin: {
value: subjectsIIN,
changeable: false,
},
phone: {
value: subjectsPhone,
}
}
}
})
})
.then(response => response.json())
.then(data => {
const { session_id, technologies } = data;
})
Case №3:
У пользователя на шаге ввода данных в полях ввода будут значения переданные в metadata
, есть возможность изменить ИИН и номер телефона.
import requests
import json
url = "https://kyc.biometric.kz/api/v1/flows/session/create/"
payload = json.dumps({
"api_key": "YOUR_FLOW_API_KEY",
"metadata": {
"edocument": {
"iin": {
"value": "<subjects_iin>",
},
"phone": {
"value": "<subjects_phone>",
},
},
})
headers = {
'Content-Type': 'application/json',
}
response = requests.post(url=url, headers=headers, data=payload)
print(response.json())
const apiKey = 'YOUR_FLOW_API_KEY'; // Ключ API вашего процесса
const subjectsIIN = '123456789012'; // Пример ИИН пользователя
const subjectsPhone = '+1234567890'; // Пример номера телефона пользователя
fetch('https://kyc.biometric.kz/api/v1/flows/session/create/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
api_key: apiKey,
metadata: {
edocument: {
iin: {
value: subjectsIIN,
},
phone: {
value: subjectsPhone,
}
}
}
})
})
.then(response => response.json())
.then(data => {
const { session_id, technologies } = data;
})
В качестве ответа придет JSON со следующими полями:
- session_id - одноразовый идентификатор сессии для прохождения flow;
- technologies - упорядоченный набор технологий flow.
Пример ответа:
4. Перенаправление конечного пользователя#
В результате выполнения предыдущих этапов должен быть получен идентификатор
сессии - session_id
. Теперь необходимо перенаправить конечного пользователя
на наш frontend-клиент. Чтобы это сделать, нужно сформировать следующий
URL:
https://remote.biometric.kz/flow/<session_id>
Также, вы можете объявить следующие параметры адресной строки:
- redirect - адрес на который произойдет редирект после прохождения технологий;
- locale - язык по умолчанию.
['ru', 'en']
;
Пример:
Далее конечный пользователь перейдет на вкладку с биометрической верификацией. В соответствии с примером, последовательно будут запускаться следующие технологии:
Код технологии | Описание |
---|---|
LD | Определение живости человека по лицу |
F2F | Определение схожести двух лиц по фото |
5. Получение результата#
Получить общий результат по сессий можно отправив GET запрос на специальный URL передав в параметрах идентификатор сессии:
URL запроса:
https://kyc.biometric.kz/api/v1/flows/session/result/
Формат запроса | Метод запроса |
---|---|
JSON | GET |
session_id
необходимо передать в параметрах запроса:
Параметр | Тип | Обязательно | Описание |
---|---|---|---|
session_id | String | Да | Идентификатор flow сессии |
flow_api_key | String | Да | API KEY созданного flow в личном кабинете который использовался при создании сессии |
Примеры запроса:
В качестве ответа придет JSON со следующими полями:
- id - идентификатор сессии;
- technologies - упорядоченный набор технологий в соответствии с созданным флоу;
- liveness_result - результат прохождения Liveness;
- document_recognition_result - результат прохождения Document Recognition;
- face2face_result - результат прохождения Face2face.
- edocument_result - результат прохождения Edocument.
Важно
Поля liveness_result
, document_recognition_result
, face2face_result
, edocument_result
отображаются только в том случае,
если клиент прошел эти технологии во время Flow.
Пример ответа:
{
"id": "session_id",
"technologies": [
{
"name": "Document Recognition",
"description": "Parse document data from image"
}
],
"document_recognition_result": {
"first_name": "First",
"last_name": "Last",
"patronymic": "Patronymic",
"personal_number": "pers_number",
"date_of_birth": "01.01.2000",
"document_number": "doc_number",
"authority": "authority"
...
6. Получение видео прохождения проверки#
Получить видео по сессий можно отправив GET запрос на специальный URL передав в параметрах
идентификатор сессии
и flow API KEY
:
URL запроса:
https://kyc.biometric.kz/api/v1/liveness/video/download/
Формат запроса | Метод запроса |
---|---|
JSON | GET |
session_id
и flow API KEY
необходимо передать в параметрах запроса:
Параметр | Тип | Обязательно | Описание |
---|---|---|---|
session_id | String | Да | Идентификатор flow сессии |
flow_api_key | String | Да | API KEY созданного flow в личном кабинете который использовался при создании сессии |
Примеры запроса:
Полный пример#
Готовый пример по запуску Flow remote может быть скачан здесь.