> For the complete documentation index, see [llms.txt](https://docs.identomat.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.identomat.com/identomat-documentation-ukr/posibnik-dlya-rozrobnikiv/kyb-know-your-business.md).

# KYB (Know Your Business)

**Потік KYB** призначений для збору та перевірки інформації про компанію, включно з даними про саму організацію, її бенефіціарів та представників.\
Він гарантує, що всі відповідні суб'єкти ідентифіковані та перевірені перед завершенням процесу onboarding.

Потік KYB складається з трьох основних кроків:

{% stepper %}
{% step %}
[Company data (Дані компанії)](#company-data-dani-kompaniyi)
{% endstep %}

{% step %}
[Beneficiaries (Бенефіціари)](#beneficiaries-beneficiari)
{% endstep %}

{% step %}
[Review (Перегляд)](#review-pereglyad)
{% endstep %}
{% endstepper %}

Кожен крок повністю настроюваний і може мати власні параметри.

## Flags (Прапорці)

`flags` — це об'єкт, що містить необов'язкові параметри конфігурації для налаштування потоку верифікації KYB.\
Нижче наведено огляд найпоширеніших прапорців:

<table data-full-width="true"><thead><tr><th width="218">Назва прапорця</th><th width="437">Опис</th><th width="216">За замовчуванням</th><th width="121">Тип</th></tr></thead><tbody><tr><td><code>skip_face</code></td><td>Пропускає крок <code>liveness</code>, якщо він вже існує у визначених кроках. Запобігає дублюванню при використанні власних потоків.</td><td><code>false</code></td><td>&#x3C;boolean></td></tr><tr><td><code>skip_document</code></td><td>Пропускає крок <code>identity-document</code>, якщо він вже існує у визначених кроках. Запобігає дублюванню при використанні власних потоків.</td><td><code>false</code></td><td>&#x3C;boolean></td></tr><tr><td><code>return_url</code></td><td>URL для перенаправлення користувача після завершення процесу ідентифікації. Якщо не вказано, вважається, що сесія вбудована в iframe.</td><td><code>null</code></td><td>&#x3C;string></td></tr><tr><td><code>language</code></td><td><p>Код мови інтерфейсу користувача. Підтримувані значення:</p><pre data-overflow="wrap"><code>"es", "ka", "uk", "ru", "uz", "it", "gr", "tr", "ro", "ar", "de", "pl", "hi", "bn", "az", "ja", "pt", "fr", "kk", "sv"
</code></pre></td><td><code>"en"</code></td><td>&#x3C;string></td></tr><tr><td><code>skip_desktop</code></td><td>Обмежує сесії лише мобільними пристроями. Якщо ініційовано на комп'ютері, показується QR-код для перенесення сесії на мобільний пристрій.</td><td><code>false</code></td><td>&#x3C;boolean></td></tr><tr><td><code>switch_device_url</code></td><td>Користувацький URL для відображення в QR-коді, коли камера недоступна або заблокована. Якщо не вказано або порожньо, QR-код не відображатиметься.</td><td><code>null</code></td><td>&#x3C;string></td></tr><tr><td><code>restrict_url_sharing</code></td><td>Забороняє використання URL сесії на іншому браузері чи пристрої.<br>Якщо <code>true</code>, QR-код не з'явиться, коли доступ до камери заборонено — якщо тільки <code>switch_device_url</code> також не визначено.</td><td><code>false</code></td><td>&#x3C;boolean></td></tr></tbody></table>

## Steps (Кроки)

Масив `steps` визначає послідовність та структуру процесу KYB. Він передається разом із параметрами `company_key` та `flags` при створенні сесії.

Кожен крок у масиві може містити власні властивості:

<table><thead><tr><th width="163.91015625">Властивість</th><th>Опис</th></tr></thead><tbody><tr><td><code>type</code></td><td>Тип конкретного кроку (див. список підтримуваних типів кроків нижче).</td></tr><tr><td><code>key</code></td><td>Унікальний ідентифікатор кроку. Цей ключ можна налаштувати, але він має залишатися унікальним у межах сесії.</td></tr><tr><td><code>flags</code></td><td>Прапорці конфігурації, специфічні для кроку, які контролюють поведінку цього кроку.</td></tr><tr><td><code>title</code></td><td>Користувацький заголовок, наданий клієнтом, що відображається користувачеві під час цього кроку в інтерфейсі.</td></tr></tbody></table>

### **Підтримувані типи кроків**

Нижче наведено список усіх типів кроків, наразі підтримуваних системою:

* Language (Мова)
* Company data (Дані компанії)
* Beneficiaries (Бенефіціари)
* Review (Перегляд)
* User questionnaire (Опитувальник користувача)

***

### Language (Мова)

Крок **Language** дозволяє користувачеві обрати бажану мову інтерфейсу на початку процесу ідентифікації.

**Конфігурації кроку Language:**

* **Заголовок:** `Language`
* **Тип**: `language`
* **Ключ**: `language`
* **Масив** `languages`

<table data-full-width="true"><thead><tr><th width="259">Прапорець</th><th width="448">Опис</th><th width="109.34765625">За замовчуванням</th><th width="130.85546875">Тип</th></tr></thead><tbody><tr><td><code>languages</code></td><td><p>Масив кодів мов для відображення. Якщо залишити порожнім, показуються всі підтримувані мови.</p><pre data-overflow="wrap"><code>"en", "ka", "es", "uk", "gr", "it", "de", "ru", "uz", "ro", "tr", "ar", "pl", "bn", "hi", "hy", "az", "ja", "pt", "fr", "kk", "sv"
</code></pre></td><td>Усі</td><td>Array&#x3C;string></td></tr></tbody></table>

<details>

<summary><em>Розгорнути, щоб переглянути приклад</em></summary>

```bash
curl https://widget.identomat.com/external-api/begin/ -d '{
    "company_key": "your_company_key_here",
    "flags": {
        "return_url": "https://example.com/",
        "language": "es"
    } ,
    "steps": [
     {
                "title": {
                  "en": "Language",
                  "ka": "ენა",
                  "es": "Idioma",
                  "uk": "Мова",
                  "gr": "Γλώσσα",
                  "it": "Lingua",
                  "de": "Sprache",
                  "ru": "Язык",
                  "uz": "Til",
                  "ro": "Limbă",
                  "tr": "Dil",
                  "ar": "اللغة",
                  "pl": "Język",
                  "bn": "ভাষা",
                  "hi": "भाषा",
                  "hy": "Լեզու",
                  "az": "Dil",
                  "ja": "言語",
                  "pt": "Idioma",
                  "fr": "Langue",
                  "kk": "Тіл",
                  "sv": "Språk"
                },
                "type": "language",
                "key": "language",
                "languages": [
                    "en",
                    "ka",
                    "es",
                    "uk",
                    "gr",
                    "it",
                    "de",
                    "ru",
                    "uz",
                    "ro",
                    "tr",
                    "ar",
                    "pl",
                    "bn",
                    "hi",
                    "hy",
                    "az",
                    "ja",
                    "pt",
                    "fr",
                    "kk",
                    "sv"
                ]
            },
            {
                "title": {
                  "en": "ID verification",
                  "ka": "პირადობის დადასტურება",
                  "es": "Verificación de identidad",
                  "uk": "Підтвердження особи",
                  "gr": "Επαλήθευση ταυτότητας",
                  "it": "Verifica dell'identità",
                  "de": "Identitätsprüfung",
                  "ru": "Проверка удостоверения личности",
                  "uz": "Shaxsni tasdiqlash",
                  "ro": "Verificare a identității",
                  "tr": "Kimlik doğrulama",
                  "ar": "التحقق من الهوية",
                  "pl": "Weryfikacja tożsamości",
                  "bn": "পরিচয় যাচাই",
                  "hi": "पहचान सत्यापन",
                  "hy": "Անձնագրի հաստատում",
                  "az": "Şəxsiyyətin təsdiqi",
                  "ja": "本人確認",
                  "pt": "Verificação de identidade",
                  "fr": "Vérification d'identité",
                  "kk": "Жеке басын тексеру",
                  "sv": "ID-verifiering"
            },
                "type": "identity-document",
                "key": "select_document_id-1",
                "flags": {
                    "document_types": [
                        "id",
                        "passport",
                        "driver_license",
                        "residence_license"
                    ],
                    "allow_document_upload": false,
                    "disable_document_capture": false
                }
            }
    ]
}'
```

</details>

***

### Company data (Дані компанії)

Цей крок збирає основну інформацію про компанію.

* **Заголовок:** `Company data`
* **Опис:** `Follow the simple steps below`
* **Тип**: `company`
* **Ключ**: `company`
* **Поля:**
  * Назва компанії (завжди обов'язкове)
  * Реєстраційний номер (завжди обов'язкове)
  * Країна реєстрації (завжди обов'язкове)
  * Тип юридичної особи
  * Юридична адреса
  * ПДВ / Податковий ID
  * Дата заснування
  * Контактний номер
  * Контактна email-адреса

**Приклад кроку:**

```json
{
  "type": "company",
  "key": "company",
  "title": { "en": "Company data" },
  "description": { "en": "Follow the simple steps below" },
  "fields": [...]
}
```

**Параметри кроку:**

<table data-full-width="true"><thead><tr><th width="224.7890625">Параметр</th><th width="632.81640625">Опис</th><th width="121">Тип</th></tr></thead><tbody><tr><td><code>type</code></td><td>Тип кроку. Має бути <code>company</code>.</td><td>&#x3C;string></td></tr><tr><td><code>key</code></td><td>Унікальний ідентифікатор кроку.</td><td>&#x3C;string></td></tr><tr><td><code>title</code></td><td>Локалізований текст заголовка, що відображається користувачеві як заголовок блоку. Заголовок може бути &#x3C;object>, що містить різні <strong>мови</strong>, дозволяючи показувати заголовок обраною мовою під час потоку.</td><td>&#x3C;object></td></tr><tr><td><code>description</code></td><td>Опис, що з'являється під заголовком з боку користувача. Подібно до заголовка, опис може бути &#x3C;object>, що містить різні <strong>мови</strong>, тож він може відображатися обраною мовою під час потоку.</td><td>&#x3C;object></td></tr><tr><td><code>fields</code></td><td>Список полів, які збиратимуться під час цього кроку.</td><td>&#x3C;array></td></tr></tbody></table>

**Поля:**

Приклад:

```json
"fields": [
                  { "type": "companyName", "mandatory": true },
                  { "type": "registrationNumber", "mandatory": true },
                  { "type": "registrationCountry", "mandatory": true },
                  { "type": "ownershipPercentage", "mandatory": false },
                  { "type": "companyEntityType", "mandatory": false },
                  { "type": "legalAddress", "mandatory": false },
                  { "type": "taxId", "mandatory": false },
                  { "type": "dateOfIncorporation", "mandatory": false },
                  { "type": "firstName", "mandatory": true },
                  { "type": "lastName", "mandatory": true },
                  { "type": "dateOfBirth", "mandatory": true },
                  { "type": "contactNumber", "mandatory": false },
                  { "type": "email", "mandatory": false }, 
                  { "type": "website", "mandatory": false }
              ]
```

<table data-full-width="true"><thead><tr><th width="237.4921875">Поле</th><th width="593.64453125">Опис</th><th width="195.2734375">Тип вводу</th></tr></thead><tbody><tr><td><code>companyEntityType</code></td><td><p><strong>Обов'язкове поле.</strong></p><p>Тип юридичної особи. Варіанти включають:</p><ul><li>Товариство з обмеженою відповідальністю</li><li>Публічна компанія</li><li>Індивідуальний підприємець</li><li>Партнерство</li><li>Корпорація</li><li>Траст</li><li>Приватний фонд</li><li>Благодійна організація</li><li>Некомерційна організація</li><li>Інше</li></ul></td><td>Випадаючий список</td></tr><tr><td><code>companyName</code></td><td><p><strong>Обов'язкове поле.</strong></p><p>Офіційна зареєстрована назва компанії.</p></td><td>Текстове поле</td></tr><tr><td><code>registrationNumber</code></td><td><p><strong>Обов'язкове поле.</strong></p><p>Реєстраційний номер компанії.</p></td><td>Текстове поле</td></tr><tr><td><code>registrationCountry</code></td><td><strong>Обов'язкове поле.</strong><br>Країна реєстрації. Варіанти: список усіх країн.</td><td>Випадаючий список</td></tr><tr><td><code>legalAddress</code></td><td>Зареєстрована юридична адреса компанії.</td><td>Текстове поле</td></tr><tr><td><code>taxId</code></td><td>Податковий ідентифікаційний номер.</td><td>Текстове поле</td></tr><tr><td><code>dateOfIncorporation</code></td><td>Дата заснування компанії.</td><td>Вибір дати</td></tr><tr><td><code>contactNumber</code></td><td>Контактний номер телефону компанії.</td><td>Текстове поле</td></tr><tr><td><code>email</code></td><td>Контактна email-адреса компанії.</td><td>Текстове поле</td></tr></tbody></table>

***

### Beneficiaries (Бенефіціари)

Крок **Beneficiaries** збирає інформацію про всіх осіб чи компаній із ролями в організації.

Кожна роль може ініціювати потік верифікації KYC або KYB.

**Підтримувані ролі:**

* **Shareholder (Акціонер)** – може бути фізичною особою або іншою компанією
* **UBOs (Кінцевий бенефіціарний власник)** – завжди фізична особа з правом власності/контролю
* **Director (Директор)** – окремий член ради директорів
* **Representative (Представник)** – уповноважена фізична особа, що діє від імені компанії
* **Other (Інше)** – власна роль (потребує назви посади)

**Приклад кроку:**

```json
{
  "type": "beneficiaries",
  "key": "beneficiaries",
  "title": { "en": "Beneficiaries" },
  "description": { "en": "Enter information about the company's beneficiaries" },
  "roles": { ... },
  "kycConfigId": "687e0ba12cf633bd323cb0db",
  "kybConfigId": "687e0ba12cf633bd323cb0d2"
}
```

**Параметри кроку:**

<table data-full-width="true"><thead><tr><th width="257.1328125">Параметр</th><th width="540.40234375">Опис</th><th width="198.234375">Тип</th></tr></thead><tbody><tr><td><code>type</code></td><td>Тип кроку. Має бути <code>beneficiaries</code>.</td><td>&#x3C;string></td></tr><tr><td><code>key</code></td><td>Унікальний ідентифікатор кроку.</td><td>&#x3C;string></td></tr><tr><td><code>title</code></td><td>Локалізований текст заголовка, що відображається користувачеві як заголовок блоку. Заголовок може бути &#x3C;object>, що містить різні <strong>мови</strong>, дозволяючи показувати заголовок обраною мовою під час потоку.</td><td>&#x3C;object></td></tr><tr><td><code>description</code></td><td>Опис, що з'являється під заголовком з боку користувача. Подібно до заголовка, опис може бути &#x3C;object>, що містить різні <strong>мови</strong>, тож він може відображатися обраною мовою під час потоку.</td><td>&#x3C;object></td></tr><tr><td><code>kycConfigId</code></td><td>ID конфігурації KYC, що застосовується до фізичних осіб.</td><td>&#x3C;string></td></tr><tr><td><code>kybConfigId</code></td><td>ID конфігурації KYB, що застосовується до компаній.</td><td>&#x3C;string></td></tr><tr><td><code>roles</code></td><td>Визначає ролі (<code>shareholder</code>, <code>ubo</code>, <code>director</code>, <code>representative</code>, <code>other</code>).</td><td>&#x3C;object></td></tr></tbody></table>

#### **Роль: Shareholder (Акціонер)**

* Може бути **фізичною особою** або **компанією**.
* `verification: true` → ініціює потік верифікації
  * **Фізична особа** → KYC (`kycConfigId`)
  * **Компанія** → KYB (`kybConfigId`)

**Важливо:**\
Для потоків верифікації акціонерів потрібні попередньо створені конфігурації KYC та KYB.\
Ці конфігурації визначають, які кроки верифікації (наприклад, завантаження документа, селфі, опитувальник) будуть застосовані під час процесу.\
Щоб дізнатися, як створювати та керувати конфігураціями KYC, див. Посібник для розробників KYC або Посібник з конфігурації KYC.

**Приклад ролі:**

```json
"roles": {
        "shareholder": {
              "fields": [
                  { "type": "ownershipPercentage", "mandatory": false },
                  { "type": "companyName", "mandatory": true },
                  { "type": "companyEntityType", "mandatory": false },
                  { "type": "registrationNumber", "mandatory": true },
                  { "type": "registrationCountry", "mandatory": true },
                  { "type": "legalAddress", "mandatory": false },
                  { "type": "taxId", "mandatory": false },
                  { "type": "dateOfIncorporation", "mandatory": false },
                  { "type": "firstName", "mandatory": true },
                  { "type": "lastName", "mandatory": true },
                  { "type": "dateOfBirth", "mandatory": true },
                  { "type": "contactNumber", "mandatory": false },
                  { "type": "email", "mandatory": false }, 
                  { "type": "website", "mandatory": false }
              ],
              "verification": true
        }
}
```

**Поля Shareholder:**

<table data-full-width="true"><thead><tr><th width="237.4921875">Поле</th><th width="484.6484375">Опис</th><th width="111.6953125">Тип вводу</th><th>Застосовується до</th></tr></thead><tbody><tr><td><code>ownershipPercentage</code></td><td>Відсоток володіння компанією.</td><td>Текстове поле</td><td>Компанія / Фізична особа</td></tr><tr><td><code>companyName</code></td><td><p><strong>Обов'язкове поле.</strong></p><p>Офіційна зареєстрована назва компанії.</p></td><td>Текстове поле</td><td>Компанія</td></tr><tr><td><code>registrationNumber</code></td><td><p><strong>Обов'язкове поле.</strong></p><p>Реєстраційний номер компанії-акціонера.</p></td><td>Текстове поле</td><td>Компанія</td></tr><tr><td><code>registrationCountry</code></td><td><strong>Обов'язкове поле.</strong><br>Країна реєстрації. Варіанти: список усіх країн.</td><td>Випадаючий список</td><td>Компанія</td></tr><tr><td><code>companyEntityType</code></td><td><p><strong>Обов'язкове поле.</strong></p><p>Тип юридичної особи. Варіанти включають:</p><ul><li>Товариство з обмеженою відповідальністю</li><li>Публічна компанія</li><li>Індивідуальний підприємець</li><li>Партнерство</li><li>Корпорація</li><li>Траст</li><li>Приватний фонд</li><li>Благодійна організація</li><li>Некомерційна організація</li><li>Інше</li></ul></td><td>Випадаючий список</td><td>Компанія</td></tr><tr><td><code>legalAddress</code></td><td>Зареєстрована юридична адреса компанії-акціонера.</td><td>Текстове поле</td><td>Компанія</td></tr><tr><td><code>taxId</code></td><td>Податковий ідентифікаційний номер.</td><td>Текстове поле</td><td>Компанія</td></tr><tr><td><code>dateOfIncorporation</code></td><td>Дата заснування компанії.</td><td>Вибір дати</td><td>Компанія</td></tr><tr><td><code>website</code></td><td>Вебсайт компанії.</td><td>Поле вводу</td><td>Компанія</td></tr><tr><td><code>contactNumber</code></td><td>Контактний номер телефону.</td><td>Текстове поле</td><td>Компанія / Фізична особа</td></tr><tr><td><code>email</code></td><td>Контактна email-адреса.</td><td>Текстове поле</td><td>Компанія / Фізична особа</td></tr><tr><td><code>firstName</code></td><td><strong>Обов'язкове поле.</strong><br>Ім'я фізичної особи.</td><td>Текстове поле</td><td>Фізична особа</td></tr><tr><td><code>lastName</code></td><td><strong>Обов'язкове поле.</strong><br>Прізвище фізичної особи.</td><td>Текстове поле</td><td>Фізична особа</td></tr><tr><td><code>dateOfBirth</code></td><td><strong>Обов'язкове поле.</strong><br>Дата народження фізичної особи.</td><td>Вибір дати</td><td>Фізична особа</td></tr></tbody></table>

#### **Роль: UBOs**

* Завжди **фізична особа**.
* `verification: true` → ініціює потік KYC (`kycConfigId`)

**Важливо:**\
Для потоків верифікації UBO потрібна попередньо створена конфігурація KYC.\
Ці конфігурації визначають, які кроки верифікації (наприклад, завантаження документа, селфі, опитувальник) будуть застосовані під час процесу.\
Щоб дізнатися, як створювати та керувати конфігураціями KYC, див. Посібник для розробників KYC або Посібник з конфігурації KYC.

**Приклад ролі:**

```json
"roles": {
            "ubo": {
              "fields": [
                { "type": "firstName", "mandatory": true },
                { "type": "lastName", "mandatory": true },
                { "type": "dateOfBirth", "mandatory": true },
                { "type": "ownershipPercentage", "mandatory": false },
                { "type": "email", "mandatory": false },
                { "type": "contactNumber", "mandatory": false }
              ],
              "verification": true
        }
}
```

**Поля UBOs:**

<table data-full-width="true"><thead><tr><th>Поле</th><th>Опис</th><th>Тип вводу</th></tr></thead><tbody><tr><td><code>firstName</code></td><td><strong>Обов'язкове поле.</strong><br>Ім'я фізичної особи.</td><td>Текстове поле</td></tr><tr><td><code>lastName</code></td><td><strong>Обов'язкове поле.</strong><br>Прізвище фізичної особи.</td><td>Текстове поле</td></tr><tr><td><code>dateOfBirth</code></td><td><strong>Обов'язкове поле.</strong><br>Дата народження фізичної особи.</td><td>Вибір дати</td></tr><tr><td><code>ownershipPercentage</code></td><td>Відсоток володіння компанією.</td><td>Текстове поле</td></tr><tr><td><code>contactNumber</code></td><td>Контактний номер телефону компанії.</td><td>Текстове поле</td></tr><tr><td><code>email</code></td><td>Контактна email-адреса компанії.</td><td>Текстове поле</td></tr></tbody></table>

#### **Роль: Director (Директор)**

* Завжди **фізична особа**.
* `verification: true` → ініціює потік KYC (`kycConfigId`)

**Важливо:**\
Для потоків верифікації директора потрібна попередньо створена конфігурація KYC.\
Ці конфігурації визначають, які кроки верифікації (наприклад, завантаження документа, селфі, опитувальник) будуть застосовані під час процесу.\
Щоб дізнатися, як створювати та керувати конфігураціями KYC, див. Посібник для розробників KYC або Посібник з конфігурації KYC.

**Приклад ролі:**

```json
"roles": {
          "director": {
              "fields": [
                { "type": "firstName", "mandatory": true },
                { "type": "lastName", "mandatory": true },
                { "type": "dateOfBirth", "mandatory": true },
                { "type": "email", "mandatory": false },
                { "type": "contactNumber", "mandatory": false }
              ],
              "verification": true
        }
}
```

**Поля Director:**

<table data-full-width="true"><thead><tr><th>Поле</th><th>Опис</th><th>Тип вводу</th></tr></thead><tbody><tr><td><code>firstName</code></td><td><strong>Обов'язкове поле.</strong><br>Ім'я фізичної особи.</td><td>Текстове поле</td></tr><tr><td><code>lastName</code></td><td><strong>Обов'язкове поле.</strong><br>Прізвище фізичної особи.</td><td>Текстове поле</td></tr><tr><td><code>dateOfBirth</code></td><td><strong>Обов'язкове поле.</strong><br>Дата народження фізичної особи.</td><td>Вибір дати</td></tr><tr><td><code>contactNumber</code></td><td>Контактний номер телефону компанії.</td><td>Текстове поле</td></tr><tr><td><code>email</code></td><td>Контактна email-адреса компанії.</td><td>Текстове поле</td></tr></tbody></table>

#### **Роль: Representative (Представник)**

* Завжди **фізична особа**.
* `verification: true` → ініціює потік KYC (`kycConfigId`)

**Важливо:**\
Для потоків верифікації представника потрібна попередньо створена конфігурація KYC.\
Ці конфігурації визначають, які кроки верифікації (наприклад, завантаження документа, селфі, опитувальник) будуть застосовані під час процесу.\
Щоб дізнатися, як створювати та керувати конфігураціями KYC, див. Посібник для розробників KYC або Посібник з конфігурації KYC.

**Приклад ролі:**

```json
"roles": {
          "representative": {
              "fields": [
                { "type": "firstName", "mandatory": true },
                { "type": "lastName", "mandatory": true },
                { "type": "dateOfBirth", "mandatory": true },
                { "type": "email", "mandatory": false },
                { "type": "contactNumber", "mandatory": false }
              ],
              "verification": true
        }
}
```

**Поля Representative:**

<table data-full-width="true"><thead><tr><th>Поле</th><th>Опис</th><th>Тип вводу</th></tr></thead><tbody><tr><td><code>firstName</code></td><td><strong>Обов'язкове поле.</strong><br>Ім'я фізичної особи.</td><td>Текстове поле</td></tr><tr><td><code>lastName</code></td><td><strong>Обов'язкове поле.</strong><br>Прізвище фізичної особи.</td><td>Текстове поле</td></tr><tr><td><code>dateOfBirth</code></td><td><strong>Обов'язкове поле.</strong><br>Дата народження фізичної особи.</td><td>Вибір дати</td></tr><tr><td><code>contactNumber</code></td><td>Контактний номер телефону компанії.</td><td>Текстове поле</td></tr><tr><td><code>email</code></td><td>Контактна email-адреса компанії.</td><td>Текстове поле</td></tr></tbody></table>

#### **Роль: Other (Інше)**

* Завжди **фізична особа**.
* `verification: true` → ініціює потік KYC (`kycConfigId`)

**Важливо:**\
Для потоків верифікації ролі Other потрібна попередньо створена конфігурація KYC.\
Ці конфігурації визначають, які кроки верифікації (наприклад, завантаження документа, селфі, опитувальник) будуть застосовані під час процесу.\
Щоб дізнатися, як створювати та керувати конфігураціями KYC, див. Посібник для розробників KYC або Посібник з конфігурації KYC.

**Приклад ролі:**

```json
"roles": {
          "other": {
              "fields": [
                { "type": "positionName", "mandatory": true },
                { "type": "firstName", "mandatory": true },
                { "type": "lastName", "mandatory": true },
                { "type": "dateOfBirth", "mandatory": true },
                { "type": "email", "mandatory": false },
                { "type": "contactNumber", "mandatory": false }
              ],
              "verification": true
        }
}
```

**Поля:**

<table data-full-width="true"><thead><tr><th>Поле</th><th>Опис</th><th>Тип вводу</th></tr></thead><tbody><tr><td><code>positionName</code></td><td><strong>Обов'язкове поле.</strong><br>Назва посади (наприклад, консультант)</td><td>Текстове поле</td></tr><tr><td><code>firstName</code></td><td><strong>Обов'язкове поле.</strong><br>Ім'я фізичної особи.</td><td>Текстове поле</td></tr><tr><td><code>lastName</code></td><td><strong>Обов'язкове поле.</strong><br>Прізвище фізичної особи.</td><td>Текстове поле</td></tr><tr><td><code>dateOfBirth</code></td><td><strong>Обов'язкове поле.</strong><br>Дата народження фізичної особи.</td><td>Вибір дати</td></tr><tr><td><code>contactNumber</code></td><td>Контактний номер телефону компанії.</td><td>Текстове поле</td></tr><tr><td><code>email</code></td><td>Контактна email-адреса компанії.</td><td>Текстове поле</td></tr></tbody></table>

***

### Review (Перегляд)

Крок **Review** показує зведення всіх зібраних даних про компанію та бенефіціарів перед поданням. Заявники можуть переглянути та відредагувати інформацію за потреби.

Приклад:

```json
{
  "type": "kyb-review",
  "key": "kyb-review",
  "title": {
    "en": "Checking the data",
    "es": "Verificando los datos"
  },
  "description": {
    "en": "Please check the information below to make sure everything is correct",
    "es": "Por favor revise la información a continuación para asegurarse de que todo esté correcto"
  }
}
```

Цей крок дозволяє заявнику редагувати дані перед поданням.

Приклад KYB cURL:

<details>

<summary><em>Розгорнути, щоб переглянути приклад</em></summary>

```bash
curl https://widget.identomat.com/external-api/begin/ -d '{
"company_key": "your_company_key_here",
"flags": {
        "return_url": "https://example.com/",
        "language": "en"
},
  "steps": [
        {
          "type": "company",
          "key": "company",
          "title": {
            "en": "Company data"
          },
          "description": {
            "en": "Follow the simple steps below"
          },
          "fields": [
               { "type": "companyName", "mandatory": true },
               { "type": "companyEntityType", "mandatory": false },
               { "type": "registrationNumber", "mandatory": true },
               { "type": "registrationCountry", "mandatory": true },
               { "type": "legalAddress", "mandatory": true },
               { "type": "taxId", "mandatory": false },
               { "type": "dateOfIncorporation", "mandatory": false },
               { "type": "contactNumber", "mandatory": false },
               { "type": "email", "mandatory": false }
          ]
        },
        {
          "type": "beneficiaries",
          "key": "beneficiaries",
          "title": {
            "en": "Beneficiaries"
          },
          "description": {
            "en": "Enter information about the company's beneficiaries"
          },
          "kycConfigId": "687e0ba12cf633bd323cb0db",
          "kybConfigId": "687e0ba12cf633bd323cb0d2",
          "roles": {
            "shareholder": {
              "fields": [
                  { "type": "ownershipPercentage", "mandatory": false },
                  { "type": "companyName", "mandatory": true },
                  { "type": "companyEntityType", "mandatory": false },
                  { "type": "registrationNumber", "mandatory": true },
                  { "type": "registrationCountry", "mandatory": true },
                  { "type": "legalAddress", "mandatory": false },
                  { "type": "taxId", "mandatory": false },
                  { "type": "dateOfIncorporation", "mandatory": false },
                  { "type": "firstName", "mandatory": true },
                  { "type": "lastName", "mandatory": true },
                  { "type": "dateOfBirth", "mandatory": true },
                  { "type": "contactNumber", "mandatory": false },
                  { "type": "email", "mandatory": false }, 
                  { "type": "website", "mandatory": false }
              ],
              "verification": true
            },
            "ubo": {
              "fields": [
                { "type": "ownershipPercentage", "mandatory": true },
                { "type": "firstName", "mandatory": true },
                { "type": "lastName", "mandatory": true },
                { "type": "dateOfBirth", "mandatory": true },
                { "type": "email", "mandatory": false },
                { "type": "contactNumber", "mandatory": false }
              ],
              "verification": true
            },
            "director": {
              "fields": [
                { "type": "firstName", "mandatory": true },
                { "type": "lastName", "mandatory": true },
                { "type": "dateOfBirth", "mandatory": true },
                { "type": "email", "mandatory": false },
                { "type": "contactNumber", "mandatory": false }
              ],
              "verification": true
            },
            "representative": {
              "fields": [
                { "type": "firstName", "mandatory": true },
                { "type": "lastName", "mandatory": true },
                { "type": "dateOfBirth", "mandatory": true },
                { "type": "email", "mandatory": false },
                { "type": "contactNumber", "mandatory": false }
              ],
              "verification": true
            },
            "other": {
              "fields": [
                { "type": "positionName", "mandatory": true },
                { "type": "firstName", "mandatory": true },
                { "type": "lastName", "mandatory": true },
                { "type": "dateOfBirth", "mandatory": true },
                { "type": "email", "mandatory": false },
                { "type": "contactNumber", "mandatory": false }
              ],
              "verification": true
            }
          }
        },
        {
          "type": "kyb-review",
          "key": "kyb-review",
          "title": {
            "en": "Checking the data"
          },
          "subtitle": {
            "en": "Please check the information below to make sure everything is correct"
          }
        }
      ]
}'
```

</details>

***

### User questionnaire (Опитувальник користувача)

Крок user questionnaire дозволяє збирати власний ввід користувача як частину потоку верифікації. Він підтримує різні типи запитань та надає багатомовну підтримку для заголовків та описів. Усі відповіді зберігаються в сесії верифікації. Цей крок має дещо іншу структуру порівняно з іншими кроками.

**Конфігурації кроку User questionnaire:**

* `type`\
  Має бути встановлено як `"user-questionnaire"`, щоб визначити цей крок як блок опитувальника користувача.
* `key`\
  Визначений клієнтом унікальний ключ для цього кроку опитувальника. Має залишатися унікальним у межах однієї сесії, щоб уникнути конфліктів.
* `title`\
  Основний заголовок опитувальника, що відображається в інтерфейсі користувача.\
  Завжди має надаватися як \<object> з кодами мов як ключами (наприклад, `"en"`), навіть якщо використовується лише одна мова. Це забезпечує узгодженість та підтримує майбутню локалізацію.
* `description`\
  Текст, що відображається під заголовком в інтерфейсі користувача, надаючи контекст чи інструкції.\
  Завжди має бути \<object> кодів мов. Той самий формат та правила, що й для `title`.
* `questions`\
  Масив об'єктів запитань, які будуть показані користувачеві.\
  Підтримувані типи запитань включають:
  * `string`: **Коротка відповідь** – Користувач вводить коротку текстову відповідь.
  * `multiple-choice`: **Прапорці** – Дозволяє користувачеві обрати один або декілька варіантів.
  * `options`: **Radio** – Користувач обирає один варіант зі списку.
  * `dropdown` : **Випадаючий список** – Користувач обирає один або декілька варіантів із випадаючого меню.
  * `file`: **Завантаження файлу** – Дозволяє користувачеві завантажити файл як відповідь.
  * `attachment`: **Вкладення -** Дозволяє прикріплювати файли динамічно (через API/конфігурацію) або за сесією. Залежно від конфігурації, файли можуть бути попередньо прикріплені для користувача або завантажені оператором під час сесії.
* `successButtonTitle`\
  Визначає мітку кнопки підтвердження, показаної в кінці опитувальника.\
  Також має бути \<object> кодів мов, навіть якщо використовується лише одна мова.\
  Якщо будь-яке запитання позначено як `"mandatory": true`, кнопка залишатиметься вимкненою, доки не будуть дані відповіді на всі обов'язкові запитання.

#### **Questions (Запитання)**

Кожне запитання в масиві `questions` підтримує набір параметрів, що визначають його поведінку та вигляд для користувача. Ось розбір усіх підтримуваних властивостей:

* `type`\
  Визначає тип запитання.\
  Підтримувані значення:
  * `string` – Коротке текстове поле
  * `multiple-choice` – Прапорець (множинний вибір)
  * `options`– Перемикачі Radio (одиничний вибір)
  * `dropdown`– Випадаюче меню (одиничний або множинний вибір)
  * `file`– Завантаження файлу
  * `attachment` - Прикріпити файли та поділитися з кінцевим користувачем
* `title`\
  Багатомовний \<object>, що представляє мітку запитання.\
  Приклад:

```json
"title": {
  "en": "What is your occupation?",
  "fr": "Quelle est votre profession ?"
}
```

* `key`\
  **Унікальний ідентифікатор** для запитання в межах того самого опитувальника. Визначається клієнтом та використовується для посилання та мапінгу даних.
* `mandatory`\
  Вказує, чи має запитання бути відповіджене, перш ніж користувач зможе продовжити.
  * Значення: `true` або `false`
* `answer`\
  Дозволяє **попередньо встановити відповідь** для користувача.

  * `string`: Простий текстовий рядок (наприклад, `"John Doe"`).
  * `options`: Один ключ варіанту (наприклад, `"opt_a"`).
  * `multiple-choice`: Масив ключів варіантів (наприклад, `["opt_a", "opt_c"]`).
  * `dropdown`: Не застосовується.
  * `file`: Не застосовується.
  * `attachment`: Масив ID файлів

  *Примітка: Кінцеві користувачі* можуть змінювати попередньо заповнені відповіді, якщо не увімкнено `readOnly`.
* `readOnly`\
  Показує запитання в **режимі, недоступному для редагування**. Користувачі можуть переглядати запитання та відповідь, але не можуть їх змінити.
  * Значення: `true` або `false`
* `showConditions`\
  Визначає **правило умовного показу** для запитання, на основі відповіді на попереднє запитання.
  * `questionKey` Ключ контролюючого запитання.
  * `answer` Ключ відповіді (для radio/checkbox) або конкретний текст (для string)

```json
"showConditions": {
  "questionKey": "employment-status",
  "answer": "self-employed"
}
```

* `multiple`\
  Специфічно для типу `dropdown`.
  * Якщо `true`, користувач може обрати **декілька значень** із випадаючого списку.
  * Значення: `true` або `false`

#### **Options (Варіанти)**

Варіанти використовуються виключно в запитаннях типу `multiple-choice`, `options` та `dropdown`. Вони визначають вибіркові варіанти, з яких користувач може обрати.

Кожне запитання, що підтримує варіанти, має включати такий параметр:

* `options`\
  Масив об'єктів варіантів для запитання. Кожен об'єкт має включати таке:
* `title`\
  Текстова мітка для варіанту, показана користувачеві під час потоку верифікації.\
  Завжди має надаватися як \<object> з кодами мов як ключами, навіть якщо використовується лише одна мова.\
  Це забезпечує узгодженість у багатомовних потоках.\
  Приклад:

```json
{
  "en": "Self-employed"
}
```

* `key`\
  Унікальний ідентифікатор для варіанту в межах опитувальника.\
  Це значення використовується для посилання в попередньо встановлених відповідях, умовах та даних сесії.\
  Має бути унікальним у межах того самого опитувальника, щоб уникнути конфліктів.

#### **Список параметрів з прикладами:**

<table data-full-width="true"><thead><tr><th width="133">Параметр</th><th width="217">Опис</th><th width="100">За замовчуванням</th><th width="118">Тип</th><th>Приклад</th></tr></thead><tbody><tr><td><code>key</code></td><td><p>Ключі обираються клієнтом та мають залишатися унікальними в межах однієї сесії.</p><p>Рекомендується використовувати ключ, що коротко описує опитувальник.</p></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"key": "terms-and-conditions"
</code></pre></td></tr><tr><td><code>title</code></td><td>Заголовок опитувальника користувача, показаний як заголовок блоку з боку користувача. Заголовок може бути &#x3C;object>, що містить різні <strong>мови</strong>, дозволяючи показувати заголовок обраною мовою під час потоку верифікації.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"title": { 
    "es": "Tu título",
    "en": "Your title"
}
</code></pre></td></tr><tr><td><code>description</code></td><td>Опис, що з'являється під заголовком з боку користувача. Подібно до заголовка, опис може бути &#x3C;object>, що містить різні <strong>мови</strong>, тож він може відображатися обраною мовою під час потоку верифікації.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"description": {
    "es": "Tu descripción",
    "en": "Your description"
}
</code></pre></td></tr><tr><td><code>questions</code></td><td>Масив запитань наступних типів: <code>string</code>, <code>multiple-choice</code> , <code>options</code>, <code>dropdown</code>.</td><td>-</td><td>&#x3C;array></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"questions": [
    {
    "type": "string",
    "title": { 
        "es": "Tu título",
        "en": "Your title"
        }
    "key": "question1",
    "mandatory": true
    },
    {
    "type": "multiple-choice",
    "title": { 
        "es": "Tu título",
        "en": "Your title"
        },
    "key": "question2",
    "mandatory": false,
    "options": [
        {
        "title": { 
        "es": "Tu título",
        "en": "Your title"
        },
        "key": "option1"
        },
        { 
        "title": { 
        "es": "Tu título",
        "en": "Your title"
        },
        "key": "option2"
        }
    ]
    }
]
</code></pre></td></tr><tr><td><code>mandatory</code></td><td><p>Вказує, чи потрібно обов'язково відповісти на запитання.<br></p><p>Можливі значення:</p><p><code>true</code>, <code>false</code></p></td><td>false</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"mandatory": false
</code></pre></td></tr><tr><td><code>answer</code></td><td>Дозволяє попередньо встановити відповідь на запитання.</td><td>-</td><td>&#x3C;string> or &#x3C;array></td><td><pre class="language-json"><code class="lang-json">"answer": "option2"
</code></pre></td></tr><tr><td><code>readOnly</code></td><td>Показує запитання, але обмежує взаємодію.</td><td>false</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"readOnly": false
</code></pre></td></tr><tr><td><code>showConditions</code></td><td>Цей параметр можна використати, щоб встановити умови для того, чи має запитання відображатися.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"showConditions": {
    "questionKey": "question1",
    "answer": "option1"
    }
</code></pre></td></tr><tr><td><code>successButtonTitle</code></td><td>Заголовок кнопки дії в опитувальнику. Якщо запитання є обов'язковими, кнопка деактивується, доки користувач не завершить опитувальник.</td><td>Confirm</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"successButtonTitle": { 
    "es": "Tu título",
    "en": "Your title"
}
</code></pre></td></tr></tbody></table>

#### **Приклад cURL:**

<details>

<summary><em>Розгорнути, щоб переглянути приклад user-questionnaire</em></summary>

<pre class="language-bash"><code class="lang-bash">curl https://widget.identomat.com/external-api/begin/ -d '{
"company_key": "your_company_key_here",
"flags": {
        "restrict_url_sharing": true,
        "language": "es"
},
"steps": [
    {
            "key": "questionnaire-page-1",
            "type": "user-questionnaire",
            "title": { 
                "es": "Tu título",
                "en": "Your title"
<strong>                },
</strong>            "description": {
                "es": "Tu descripción",
                "en": "Your description"
                },
            "questions": [
                {
                "type": "string",
                "title": {
                "es": "Tu título",
                "en": "Your title"
                },
                "key": "question1",
                "mandatory": true
                },
                {
                "type": "multiple-choice",
                "title": {
                "es": "Tu título",
                "en": "Your title"
                },
                "key": "question2",
                "mandatory": false,
                "options": [
                    {
                    "title": {
                    "es": "Tu título",
                    "en": "Your title"
                    },
                    "key": "option1"
                    },
                    { 
                    "title": {
                    "es": "Tu título",
                    "en": "Your title"
                    },
                    "key": "option2"
                    }
                ],
                "answer": ["option2"],
                "readOnly": true
                },
                {
                "type": "options",
                "title": {
                "es": "Tu título",
                "en": "Your title"
                },
                "key": "question3",
                "mandatory": true,
                "options": [
                    {
                    "title": {
                    "es": "Tu título",
                    "en": "Your title"
                    },
                    "key": "option3"
                    },
                    { 
                    "title": {
                    "es": "Tu título",
                    "en": "Your title"
                    },
                    "key": "option4"
                    }
                ]
            }
        ]
    }
]
}'
</code></pre>

</details>

#### **Тип запитання: Коротка відповідь**

Доступні параметри:

<table data-full-width="true"><thead><tr><th width="133">Параметр</th><th width="217">Опис</th><th width="100">За замовчуванням</th><th width="118">Тип</th><th>Приклад</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>string</code></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json"><code class="lang-json">"type": "string"
</code></pre></td></tr><tr><td><code>key</code></td><td><p>Ключі обираються клієнтом та мають залишатися унікальними в межах однієї сесії.</p><p>Рекомендується використовувати ключ, що коротко описує запитання.</p></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"key": "your-address"
</code></pre></td></tr><tr><td><code>title</code></td><td>Заголовок є &#x3C;object> мов, тож якщо користувач змінює мову під час потоку верифікації, запитання можна показувати різними мовами. Немає обмежень щодо довжини чи символів.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"title": { 
    "es": "Tu título",
    "en": "Your title"
}
</code></pre></td></tr><tr><td><code>mandatory</code></td><td><p>Вказує, чи потрібно обов'язково відповісти на запитання.<br></p><p>Можливі значення:</p><p><code>true</code>, <code>false</code></p></td><td>false</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"mandatory": true
</code></pre></td></tr><tr><td><code>format</code></td><td>Визначає очікувану структуру відповіді користувача. Визначає, як перевіряється ввід.</td><td><code>free-text</code></td><td>&#x3C;object></td><td><pre class="language-json"><code class="lang-json">"format": {
    "type": "free-text"
}
</code></pre><pre class="language-json"><code class="lang-json">"format": {
    "type": "email"
}
</code></pre></td></tr><tr><td><code>answer</code></td><td>Дозволяє попередньо встановити відповідь на запитання.<br>Відповідь є &#x3C;object> мов, тож якщо користувач змінює мову під час потоку верифікації, попередньо заповнену відповідь можна показувати різними мовами.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"answer": { 
        "en": "This is a prefilled answer",
        "es":"Esta es una respuesta prellenada."
}
</code></pre></td></tr><tr><td><code>readOnly</code></td><td>Показує запитання, але обмежує взаємодію.</td><td>false</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"readOnly": true
</code></pre></td></tr><tr><td><code>showConditions</code></td><td>Цей параметр можна використати, щоб встановити умови для того, чи має запитання відображатися.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"showConditions": {
    "questionKey": "question1",
    "answer": "option1"
    }
</code></pre></td></tr></tbody></table>

<details>

<summary><em>Розгорнути, щоб переглянути приклад запитання КОРОТКА ВІДПОВІДЬ</em></summary>

```json
"questions": [
    {
        "type": "string",
        "title": {
            "es": "Tu título",
            "en": "Your title"
        },
        "key": "question1",
        "mandatory": true,
        "answer": {
            "en": "This is a prefilled answer",
            "es": "Esta es una respuesta prellenada."
        },
        "showConditions": {
            "questionKey": "question1",
            "answer": "option1"
        },
        "readOnly": true
    }
]
```

</details>

***

#### **Тип запитання: Прапорець (Checkbox)**

Доступні параметри:

<table data-full-width="true"><thead><tr><th width="133">Параметр</th><th width="217">Опис</th><th width="100">За замовчуванням</th><th width="118">Тип</th><th>Приклад</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>multiple-choice</code></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json"><code class="lang-json">"type": "multiple-choice"
</code></pre></td></tr><tr><td><code>key</code></td><td><p>Ключі обираються клієнтом та мають залишатися унікальними в межах однієї сесії.</p><p>Рекомендується використовувати ключ, що коротко описує запитання.</p></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"key": "check-two-answers"
</code></pre></td></tr><tr><td><code>title</code></td><td>Заголовок є &#x3C;object> мов, тож якщо користувач змінює мову під час потоку верифікації, запитання можна показувати різними мовами. Немає обмежень щодо довжини чи символів.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"title": { 
    "es": "Tu título",
    "en": "Your title"
}
</code></pre></td></tr><tr><td><code>options</code></td><td><p>Масив варіантів для запитання. Кожен варіант може мати:</p><ul><li>"<strong>title</strong>" : Заголовок варіанту. Заголовок є &#x3C;object>, що містить різні мови, дозволяючи показувати варіант обраною мовою під час потоку верифікації.</li><li>"<strong>key</strong>": Ключ для варіанту, обраний клієнтом. Має залишатися унікальним у межах одного опитувальника.</li></ul></td><td>-</td><td>&#x3C;array></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"options": [
    {
        "title": {
            "en": "Identity Document",
            "es": "Documento de identidad"
        },
        "key": "identity-document"
    },
    {
        "title": {
            "en": "Proof of Address",
            "es": "Comprobante de domicilio"
        },
        "key": "proof-of-address"
    ]
</code></pre></td></tr><tr><td><code>mandatory</code></td><td><p>Вказує, чи потрібно обов'язково відповісти на запитання.<br></p><p>Можливі значення:</p><p><code>true</code>, <code>false</code></p></td><td>false</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"mandatory": true
</code></pre></td></tr><tr><td><code>answer</code></td><td>Дозволяє попередньо встановити відповідь на запитання.<br>Відповідь є &#x3C;array> <strong>ключів варіантів</strong>, призначених для цього запитання.</td><td>-</td><td>&#x3C;array></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"answer": [
    "option-1",
    "option-2"
]
</code></pre></td></tr><tr><td><code>readOnly</code></td><td>Показує запитання, але обмежує взаємодію.</td><td>false</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"readOnly": true
</code></pre></td></tr><tr><td><code>showConditions</code></td><td>Цей параметр можна використати, щоб встановити умови для того, чи має запитання відображатися.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"showConditions": {
    "questionKey": "question1",
    "answer": "option1"
    }
</code></pre></td></tr></tbody></table>

<details>

<summary><em>Розгорнути, щоб переглянути приклад запитання ПРАПОРЕЦЬ</em></summary>

```json
"questions": [
    {
        "type": "multiple-choice",
        "title": {
            "es": "Tu título",
            "en": "Your title"
        },
        "key": "question2",
        "options": [
            {
                "title": {
                    "en": "Identity Document",
                    "es": "Documento de identidad"
                },
                "key": "identity-document"
            },
            {
                "title": {
                    "en": "Proof of Address",
                    "es": "Comprobante de domicilio"
                },
                "key": "proof-of-address"
            ],
            "mandatory": true,
            "answer": [
                "identity-document",
                "proof-of-address"
            },
            "showConditions": {
                "questionKey": "question1",
                "answer": "option1"
            },
            "readOnly": true
        }
    ]
```

</details>

***

#### **Тип запитання: Radio**

Доступні параметри:

<table data-full-width="true"><thead><tr><th width="133">Параметр</th><th width="217">Опис</th><th width="100">За замовчуванням</th><th width="118">Тип</th><th>Приклад</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>options</code></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json"><code class="lang-json">"type": "options"
</code></pre></td></tr><tr><td><code>key</code></td><td><p>Ключі обираються клієнтом та мають залишатися унікальними в межах однієї сесії.</p><p>Рекомендується використовувати ключ, що коротко описує запитання.</p></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"key": "choose-one-answer"
</code></pre></td></tr><tr><td><code>title</code></td><td>Заголовок є &#x3C;object> мов, тож якщо користувач змінює мову під час потоку верифікації, запитання можна показувати різними мовами. Немає обмежень щодо довжини чи символів.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"title": { 
    "es": "Tu título",
    "en": "Your title"
}
</code></pre></td></tr><tr><td><code>options</code></td><td><p>Масив варіантів для запитання. Кожен варіант може мати:</p><ul><li>"<strong>title</strong>" : Заголовок варіанту. Заголовок є &#x3C;object>, що містить різні мови, дозволяючи показувати варіант обраною мовою під час потоку верифікації.</li><li>"<strong>key</strong>": Ключ для варіанту, обраний клієнтом. Має залишатися унікальним у межах одного опитувальника.</li></ul></td><td>-</td><td>&#x3C;array></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"options": [
    {
        "title": {
            "en": "Identity Document",
            "es": "Documento de identidad"
        },
        "key": "identity-document"
    },
    {
        "title": {
            "en": "Proof of Address",
            "es": "Comprobante de domicilio"
        },
        "key": "proof-of-address"
    ]
</code></pre></td></tr><tr><td><code>mandatory</code></td><td><p>Вказує, чи потрібно обов'язково відповісти на запитання.<br></p><p>Можливі значення:</p><p><code>true</code>, <code>false</code></p></td><td>false</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"mandatory": true
</code></pre></td></tr><tr><td><code>answer</code></td><td>Дозволяє попередньо встановити відповідь на запитання.<br>Відповідь є &#x3C;string> <strong>ключа варіанту</strong>, призначеного для цього запитання.</td><td>-</td><td>&#x3C;string></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"answer": "option-1"
</code></pre></td></tr><tr><td><code>readOnly</code></td><td>Показує запитання, але обмежує взаємодію.</td><td>false</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"readOnly": true
</code></pre></td></tr><tr><td><code>showConditions</code></td><td>Цей параметр можна використати, щоб встановити умови для того, чи має запитання відображатися.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"showConditions": {
    "questionKey": "question1",
    "answer": "option1"
    }
</code></pre></td></tr></tbody></table>

<details>

<summary><em>Розгорнути, щоб переглянути приклад запитання RADIO</em></summary>

```json
"questions": [
    {
        "type": "options",
        "title": {
            "es": "Tu título",
            "en": "Your title"
        },
        "key": "question3",
        "options": [
            {
                "title": {
                    "en": "Identity Document",
                    "es": "Documento de identidad"
                },
                "key": "identity-document"
            },
            {
                "title": {
                    "en": "Proof of Address",
                    "es": "Comprobante de domicilio"
                },
                "key": "proof-of-address"
            ],
            "mandatory": true,
            "answer": "identity-document",
            "showConditions": {
                "questionKey": "question1",
                "answer": "option1"
            },
            "readOnly": true
        }
    ]
```

</details>

***

#### **Тип запитання: Випадаючий список**

Доступні параметри:

<table data-full-width="true"><thead><tr><th width="133">Параметр</th><th width="217">Опис</th><th width="100">За замовчуванням</th><th width="118">Тип</th><th>Приклад</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>dropdown</code></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json"><code class="lang-json">"type": "dropdown"
</code></pre></td></tr><tr><td><code>key</code></td><td><p>Ключі обираються клієнтом та мають залишатися унікальними в межах однієї сесії.</p><p>Рекомендується використовувати ключ, що коротко описує запитання.</p></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"key": "choose-from-list"
</code></pre></td></tr><tr><td><code>title</code></td><td>Заголовок є &#x3C;object> мов, тож якщо користувач змінює мову під час потоку верифікації, запитання можна показувати різними мовами. Немає обмежень щодо довжини чи символів.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"title": { 
    "es": "Tu título",
    "en": "Your title"
}
</code></pre></td></tr><tr><td><code>options</code></td><td><p>Масив варіантів для запитання. Кожен варіант може мати:</p><ul><li>"<strong>title</strong>" : Заголовок варіанту. Заголовок є &#x3C;object>, що містить різні мови, дозволяючи показувати варіант обраною мовою під час потоку верифікації.</li><li>"<strong>key</strong>": Ключ для варіанту, обраний клієнтом. Має залишатися унікальним у межах одного опитувальника.</li></ul></td><td>-</td><td>&#x3C;array></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"options": [
    {
        "title": {
            "en": "Identity Document",
            "es": "Documento de identidad"
        },
        "key": "identity-document"
    },
    {
        "title": {
            "en": "Proof of Address",
            "es": "Comprobante de domicilio"
        },
        "key": "proof-of-address"
    ]
</code></pre></td></tr><tr><td><code>mandatory</code></td><td><p>Вказує, чи потрібно обов'язково відповісти на запитання.<br></p><p>Можливі значення:</p><p><code>true</code>, <code>false</code></p></td><td>false</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"mandatory": true
</code></pre></td></tr><tr><td><code>multiple</code></td><td><p>Вказує, чи запитання є одиничним чи множинним вибором.</p><p>Можливі значення:</p><p><code>true</code>, <code>false</code></p></td><td>false</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"multiple": true
</code></pre></td></tr><tr><td><code>showConditions</code></td><td>Цей параметр можна використати, щоб встановити умови для того, чи має запитання відображатися.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"showConditions": {
    "questionKey": "question1",
    "answer": "option1"
    }
</code></pre></td></tr></tbody></table>

<details>

<summary><em>Розгорнути, щоб переглянути приклад запитання ВИПАДАЮЧИЙ СПИСОК</em></summary>

```json
"questions": [
    {
        "type": "options",
        "title": {
            "es": "Tu título",
            "en": "Your title"
        },
        "key": "question4",
        "options": [
            {
                "title": {
                    "en": "Identity Document",
                    "es": "Documento de identidad"
                },
                "key": "identity-document"
            },
            {
                "title": {
                    "en": "Proof of Address",
                    "es": "Comprobante de domicilio"
                },
                "key": "proof-of-address"
            ],
            "mandatory": true,
            "multiple": true,
            "showConditions": {
                "questionKey": "question1",
                "answer": "option1"
            }
        }
    ]
```

</details>

***

#### **Тип запитання: Завантаження файлу**

Доступні параметри:

<table data-full-width="true"><thead><tr><th width="133">Параметр</th><th width="217">Опис</th><th width="100">За замовчуванням</th><th width="118">Тип</th><th>Приклад</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>file</code></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json"><code class="lang-json">"type": "file"
</code></pre></td></tr><tr><td><code>key</code></td><td><p>Ключі обираються клієнтом та мають залишатися унікальними в межах однієї сесії.</p><p>Рекомендується використовувати ключ, що коротко описує запитання.</p></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"key": "choose-from-list"
</code></pre></td></tr><tr><td><code>title</code></td><td>Заголовок є <code>&#x3C;object></code> мов, тож якщо користувач змінює мову під час потоку верифікації, запитання можна показувати різними мовами. Немає обмежень щодо довжини чи символів.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"title": { 
    "es": "Tu título",
    "en": "Your title"
}
</code></pre></td></tr><tr><td><code>description</code></td><td>Опис, що з'являється під заголовком. Подібно до заголовка, опис може бути &#x3C;object>, що містить різні мови, тож він може відображатися обраною мовою під час потоку верифікації.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json"><code class="lang-json">"description": {
    "es": "Tu descripción",
    "en": "Your description"
}
</code></pre></td></tr><tr><td><code>mandatory</code></td><td><p>Вказує, чи потрібно обов'язково відповісти на запитання.<br></p><p>Можливі значення:</p><p><code>true</code>, <code>false</code></p></td><td>false</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"mandatory": true
</code></pre></td></tr><tr><td><code>fileTypes</code></td><td>Вказує типи файлів, які користувач може завантажувати.<br><br>Можливі значення:<br><code>pdf</code>, <code>image</code>.</td><td>[ <code>"pdf"</code>, <code>"image"</code> ]</td><td>&#x3C;array></td><td><pre class="language-json"><code class="lang-json">"fileTypes": [
    "pdf",
    "image"
]
</code></pre></td></tr><tr><td><code>filesMaxCount</code></td><td>Вказує максимальну кількість файлів, які користувач може завантажити.<br><br>Можливі значення:<br>Число від 1 до 10.</td><td>10</td><td>&#x3C;number></td><td><pre class="language-json"><code class="lang-json">"filesMaxCount": 5
</code></pre></td></tr><tr><td><code>showConditions</code></td><td>Цей параметр можна використати, щоб встановити умови для того, чи має запитання відображатися.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json5" data-overflow="wrap"><code class="lang-json5">"showConditions": {
    "questionKey": "question1",
    "answer": "option1"
    }
</code></pre></td></tr></tbody></table>

<details>

<summary><em>Розгорнути, щоб переглянути приклад запитання ЗАВАНТАЖЕННЯ ФАЙЛУ</em></summary>

```json
"questions": [
    {
        "type": "file",
        "title": {
            "es": "Tu título",
            "en": "Your title"
        },
        "key": "question5",
            "mandatory": true,
            "fileTypes": [
            "pdf",
            "image"
            ],
            "filesMaxCount": 5,
            "showConditions": {
                "questionKey": "question1",
                "answer": "option1"
            }
        }
    ]
```

</details>

***

#### **Тип запитання: Вкладення**

Тип запитання **Attachment** дозволяє прикріпляти файли до опитувальника. Він підтримує два основних випадки використання:

1. **Вкладення, додані оператором за сесією**\
   Оператор завантажує файли під час або перед сесією верифікації та ділиться ними з кінцевим користувачем.
2. **Попередньо визначені вкладення з конфігурації чи API**\
   Файли завантажуються в інтерфейсі конфігурації або динамічно надаються через API. Ці файли автоматично включаються в майбутні сесії.

**Поведінка**

* Вкладення видимі як оператору, так і кінцевому користувачу.
* Коли файли надані через API (`answer`) чи конфігурацію, вони з'являться при відкритті опитувальника.
* Залежно від налаштувань, оператору може бути дозволено або заборонено змінювати вкладення після того, як користувач підтвердив опитувальник.

Доступні параметри:

<table data-full-width="true"><thead><tr><th width="133">Параметр</th><th width="217">Опис</th><th width="100">За замовчуванням</th><th width="118">Тип</th><th>Приклад</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>attachment</code></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json"><code class="lang-json">"type": "attachment"
</code></pre></td></tr><tr><td><code>key</code></td><td><p>Ключі обираються клієнтом та мають залишатися унікальними в межах однієї сесії.</p><p>Рекомендується використовувати ключ, що коротко описує запитання.</p></td><td>-</td><td>&#x3C;string></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"key": "attached-documents"
</code></pre></td></tr><tr><td><code>title</code></td><td>Заголовок є <code>&#x3C;object></code> мов, тож якщо користувач змінює мову під час потоку верифікації, запитання можна показувати різними мовами. Немає обмежень щодо довжини чи символів.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"title": { 
    "es": "Tu título",
    "en": "Your title"
}
</code></pre></td></tr><tr><td><code>description</code></td><td>Опис, що з'являється під заголовком. Подібно до заголовка, опис може бути &#x3C;object>, що містить різні мови, тож він може відображатися обраною мовою під час потоку верифікації.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json"><code class="lang-json">"description": {
    "es": "Tu descripción",
    "en": "Your description"
}
</code></pre></td></tr><tr><td><code>fileTypes</code></td><td>Вказує типи файлів, які користувач може завантажувати.<br><br>Можливі значення:<br><code>pdf</code>, <code>image</code>.</td><td>[ <code>"pdf"</code>, <code>"image"</code> ]</td><td>&#x3C;array></td><td><pre class="language-json"><code class="lang-json">"fileTypes": [
    "pdf",
    "image"
]
</code></pre></td></tr><tr><td><code>filesMaxCount</code></td><td>Вказує максимальну кількість файлів, які користувач може завантажити.<br><br>Можливі значення:<br>Число від 1 до 10.</td><td>10</td><td>&#x3C;number></td><td><pre class="language-json"><code class="lang-json">"filesMaxCount": 5
</code></pre></td></tr><tr><td><code>showConditions</code></td><td>Цей параметр можна використати, щоб встановити умови для того, чи має запитання відображатися.</td><td>-</td><td>&#x3C;object></td><td><pre class="language-json" data-overflow="wrap"><code class="lang-json">"showConditions": {
    "questionKey": "question1",
    "answer": "option1"
    }
</code></pre></td></tr><tr><td><code>allowOperatorUpload</code></td><td>Контролює, як додаються файли:<br>• <strong>true</strong> – оператор завантажує файли за сесією.<br>• <strong>false</strong> – файли надаються лише через конфігурацію чи API.</td><td>true</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"allowOperatorUpload": true
</code></pre></td></tr><tr><td><code>allowOperatorOverride</code></td><td>Якщо <strong>false</strong>, оператор не може редагувати вкладення після того, як користувач підтвердив опитувальник.<br>Якщо <strong>true</strong>, оператор все ще може завантажувати або видаляти файли.</td><td>true</td><td>&#x3C;boolean></td><td><pre class="language-json"><code class="lang-json">"allowOperatorOverride": true
</code></pre></td></tr></tbody></table>

<details>

<summary><em>Розгорнути, щоб переглянути приклад запитання ВКЛАДЕННЯ</em></summary>

```json
"questions": [
    {
        "type": "attachment",
        "title": {
            "es": "Tu título",
            "en": "Your title"
        },
        "description": {
            "es": "Tu descripción",
            "en": "Your description"
            },
        "key": "question5",
        "fileTypes": [
            "pdf",
            "image"
            ],
        "filesMaxCount": 5,
        "allowOperatorUpload": true,
        "allowOperatorOverride": true,
        "answer": [ ],
        "showConditions": {
            "questionKey": "question1",
            "answer": "option1"
            }
        }
    ]
```

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.identomat.com/identomat-documentation-ukr/posibnik-dlya-rozrobnikiv/kyb-know-your-business.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
