> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Включение AML-мониторинга для пользователей через API

> Включение и отключение AML-мониторинга для пользователей в Didit одним вызовом: оценка стоимости, фоновая задача и результат по каждому.



Промпт: включение и выключение AML-мониторинга для пользователей
        Скопировать промпт в буфер обмена



      
      

\<pre>

\`Goal: Enable or disable ongoing AML monitoring for one or many Didit User entities in a single call, with the same semantics as the Business Console. Preview the cost first with estimate_only, then run the change and read the per-user outcome.

Endpoint: POST https://verification.didit.me/v3/users/aml-monitoring/
Auth header: x-api-key: <DIDIT_API_KEY>
Content-Type: application/json

Request body:
\- is_enabled: boolean (required) - true to enable monitoring, false to disable it.
\- estimate_only: boolean (default false) - when true, returns the cost preview and performs NO writes: no screening, no billing, no job.
\- vendor_data_list: string[] - your own identifiers, matched exactly as sent.
\- didit_internal_id_list: string[] (UUIDs) - the didit_internal_id returned by the create, get and list endpoints.
Provide at least one list; the two are OR'd. At most 1000 identifiers per request across both lists - split larger selections into several calls.

Semantics:
\- One monitored screening per user: a person who verified several times is monitored and billed once. Disabling turns monitoring off across all of the user's screenings.
\- Users without any AML screening are screened first (billed as a regular AML screening) when the profile has a full name, date of birth and country; otherwise the user is reported as skipped_no_identity_data.
\- Blocked users are skipped (skipped_blocked). Sandbox applications never create screenings (skipped_sandbox).
\- Enabling is refused with 403 when the organization balance does not cover the estimate; the response carries the estimate.

curl (estimate first):
curl -X POST 'https://verification.didit.me/v3/users/aml-monitoring/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"is_enabled": true, "estimate_only": true, "vendor_data_list": ["user-123", "user-456"]}'

Response 200 (estimate_only):
\{
"users_total": 2, "already_enabled": 0, "with_existing_aml": 1, "needing_screening": 1,
"skipped_no_identity_data": 0, "skipped_blocked": 0,
"estimated_screening_cost_usd": 0.2, "estimated_annual_monitoring_cost_usd": 0.14,
"balance_sufficient": true, "unmatched": []
}

curl (enable):
curl -X POST 'https://verification.didit.me/v3/users/aml-monitoring/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"is_enabled": true, "vendor_data_list": ["user-123", "user-456"]}'

Response 200 (20 users or fewer - processed inline, already COMPLETED) or 202 (more than 20 - running in the background):
\{
"job_id": "<uuid>", "status": "COMPLETED", "is_enabled": true, "target_type": "user",
"total": 2, "processed": 2,
"outcomes": {"enabled": 1, "screened_and_enabled": 1, "already_enabled": 0, "disabled": 0, "skipped_no_identity_data": 0, "skipped_blocked": 0, "skipped_sandbox": 0, "failed_provider": 0, "failed_insufficient_balance": 0},
"results": [
\{"didit_internal_id": "<uuid>", "vendor_data": "user-123", "outcome": "enabled"},
\{"didit_internal_id": "<uuid>", "vendor_data": "user-456", "outcome": "screened_and_enabled"}
],
"estimate": { ...same shape as above, without unmatched... },
"unmatched": [],
"error": null,                     // generic message when status is FAILED
"created_at": "<datetime>", "completed_at": "<datetime>"
}
On 202, poll GET /v3/aml-monitoring/jobs/{job_id}/ every couple of seconds until status is COMPLETED or FAILED; results fills in as users are processed.

Per-user outcome values: enabled, screened_and_enabled, already_enabled, disabled, skipped_no_identity_data, skipped_blocked, skipped_sandbox, failed_provider, failed_insufficient_balance.

Failure modes:
\- 400 - is_enabled missing, no selector, or more than 1000 identifiers across both lists.
A selection that matches nothing is NOT an error: the job completes with total 0 and every identifier is listed under unmatched (same convention as the batch delete endpoints).
\- 401 - missing/invalid x-api-key.
\- 403 - insufficient balance to enable monitoring for this selection (body: error + estimate).

Idempotency: re-sending an enable returns already_enabled for users that are already monitored, with no second screening and no second bill. Disabling an unmonitored user returns disabled and changes nothing.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

Вставьте в

## ОбзорВключает или выключает [постоянный AML-мониторинг](https://docs.didit.me/ru/core-technology/aml-screening/continuous-monitoring-aml-screening.md) для выбранных [объектов User](https://docs.didit.me/ru/entities/users/overview.md) так же, как действие **Постоянный AML-мониторинг** в Business Console. Консоль и этот эндпоинт выполняют одну и ту же базовую операцию, поэтому правила, биллинг и результаты совпадают.Сначала отправьте `estimate_only: true`, чтобы увидеть, сколько пользователей выбрано, сколько из них требуют нового AML-скрининга, стоимость разового скрининга и годовую стоимость мониторинга. Пробный запуск ничего не записывает.## Когда использовать- **Программный онбординг**: включите мониторинг для пользователей, которых вы импортировали или создали через API, без ручного повторного скрининга.
- **Оффбординг**: выключите мониторинг и его годовое продление для пользователей, которые покинули вашу платформу.
- **Контроль расходов**: заранее посмотрите точное влияние выбранной группы на стоимость, прежде чем подтверждать действие.## Как обрабатывается выборка- **Один скрининг под мониторингом на пользователя.** Пользователь, который проходил верификацию несколько раз, находится под мониторингом и тарифицируется один раз. Выключение мониторинга отключает его для всех скринингов этого пользователя.
- **Пользователи без AML-скрининга сначала проходят скрининг.** Didit создает для них новую AML-верификацию (она видна на вкладке **Верификации** пользователя), тарифицируется как обычный AML-скрининг, и на ней включается мониторинг. Для этого нужны полное имя пользователя, дата рождения и страна. Если хотя бы одного из этих данных нет, пользователь возвращается со статусом `skipped_no_identity_data`, а не пропадает молча.
- **Заблокированные пользователи пропускаются** (`skipped_blocked`). Приложения в песочнице никогда не создают скрининги (`skipped_sandbox`).
- **Баланс проверяется заранее.** Включение отклоняется с кодом `403`, если баланса недостаточно для покрытия расчетной стоимости. В ответе передается оценка, чтобы вы знали, на какую сумму нужно пополнить баланс.
- **Годовое продление.** Для нового пользователя под мониторингом годовая стоимость мониторинга начисляется на следующую дату продления. Это та же дата, что показана в колонке **Постоянный AML-мониторинг** в Консоли. Выключение останавливает продление, но не возвращает средства за уже оплаченный период.## Выбор и размер пакетаВыбирайте пользователей через `vendor_data_list`, `didit_internal_id_list` или через оба параметра. Списки объединяются логическим ИЛИ. Один запрос принимает не более **1000 идентификаторов** в сумме по обоим спискам. Идентификаторы, которые не совпадают ни с одним пользователем вашего приложения, возвращаются в `unmatched` в том виде, в котором были отправлены. Они никогда не приводят к ошибке запроса. Выборка без совпадений завершается пустой задачей (`total: 0`), где перечислены все идентификаторы. Это то же правило, что и у эндпоинтов пакетного удаления.## Синхронная или фоновая обработкаВыборки из **20 пользователей или меньше** обрабатываются синхронно, и вызов возвращает `200` с завершенной задачей. Большие выборки возвращают `202` с задачей в статусе `PENDING`. Опрашивайте [Get AML Monitoring Job](https://docs.didit.me/ru/management-api/aml-monitoring/get-job.md), пока `status` не станет `COMPLETED` или `FAILED`. В любом случае задача содержит по одной записи `results` на каждого пользователя с его `outcome`.| `outcome` | Значение |
| - | - |
| `enabled` | Мониторинг включен для существующего AML-скрининга. |
| `screened_and_enabled` | Создан новый AML-скрининг (оплачивается), и на нем включен мониторинг. |
| `already_enabled` | Мониторинг уже был активен; ничего не изменилось, ничего не начислено. |
| `disabled` | Мониторинг выключен для всех скринингов пользователя. |
| `skipped_no_identity_data` | У пользователя нет полного имени, даты рождения или страны, которые нужны для скрининга. |
| `skipped_blocked` | Пользователь заблокирован. |
| `skipped_sandbox` | Приложение в песочнице; скрининг не создается. |
| `failed_provider` | Скрининг не удалось завершить. Повторите попытку позже. |
| `failed_insufficient_balance` | Баланс закончился во время выполнения задачи. |## WebhookПереключение мониторинга не отправляет собственного webhook. Когда мониторинг включен, повторные проверки продолжают отправлять обычные события `status.updated` и `data.updated`, описанные в [Continuous AML Monitoring](https://docs.didit.me/ru/core-technology/aml-screening/continuous-monitoring-aml-screening.md).## Права доступаВызывать этот эндпоинт может любой активный API-ключ приложения. API-ключи Didit привязаны к **приложению, а не к роли**. [Роли и разрешения](https://docs.didit.me/ru/console/roles-permissions.md) в Консоли определяют, что может делать *человек* в Консоли, и для трафика Management API они не проверяются.## Связанные материалы- [Get AML Monitoring Job](https://docs.didit.me/ru/management-api/aml-monitoring/get-job.md)
- [Toggle AML Monitoring for Businesses](https://docs.didit.me/ru/management-api/aml-monitoring/toggle-businesses.md)
- [Continuous AML Monitoring](https://docs.didit.me/ru/core-technology/aml-screening/continuous-monitoring-aml-screening.md)
- [AML Screening API](https://docs.didit.me/ru/standalone-apis/aml-screening.md)
- [List Users](https://docs.didit.me/ru/management-api/users/list.md)


## OpenAPI

````yaml ru/openapi-25.json POST /v3/users/aml-monitoring/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: >-
    API верификации личности. Аутентификация выполняется с помощью заголовка
    x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/users/aml-monitoring/:
    post:
      tags:
        - AML Ongoing Monitoring
      summary: Включить или отключить постоянный AML-мониторинг для пользователей
      description: >-
        Включает или выключает постоянный AML-мониторинг для выбранных
        пользователей с той же семантикой, что и в Business Console. Для каждого
        пользователя сохраняется ровно один отслеживаемый AML-скрининг, поэтому
        профиль, прошедший верификацию несколько раз, отслеживается и
        тарифицируется единожды; отключение выключает мониторинг во всех
        скринингах этого профиля. Пользователи без какого-либо AML-скрининга
        сначала проходят скрининг (тарифицируется как обычный AML-скрининг),
        если у них есть необходимые для этого полное имя, дата рождения и
        страна; в противном случае они отмечаются как
        `skipped_no_identity_data`.


        Задайте `estimate_only: true`, чтобы предварительно просмотреть
        количество и затраты без внесения изменений. Выборки из 20 профилей или
        менее обрабатываются синхронно и возвращают `200` с завершённой задачей;
        более крупные выборки возвращают `202` и выполняются в фоновом режиме:
        опрашивайте [Get AML monitoring
        job](#get-/v3/aml-monitoring/jobs/-job_id-/) с возвращённым `job_id`. Во
        включении будет отказано с кодом `403`, если баланс организации не
        покрывает расчётную стоимость. Идентификаторы, по которым ничего не
        найдено, перечисляются в `unmatched` и никогда не приводят к ошибке
        запроса: выборка без совпадений завершается как пустая задача (`total`
        0), аналогично endpoints пакетного удаления.
      operationId: toggle_users_aml_monitoring
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - is_enabled
              description: >-
                Выберите пользователей с помощью `vendor_data_list`,
                `didit_internal_id_list` или обоих параметров (два списка
                объединяются через OR). Не более 1000 идентификаторов на запрос
                в сумме по обоим спискам.
              properties:
                is_enabled:
                  type: boolean
                  description: true для включения мониторинга, false для его отключения.
                estimate_only:
                  type: boolean
                  default: false
                  description: >-
                    Если true, возвращает предварительную оценку стоимости и не
                    выполняет операций записи: без скрининга, без биллинга, без
                    создания задачи.
                vendor_data_list:
                  type: array
                  items:
                    type: string
                  description: >-
                    Ваши собственные идентификаторы пользователей для
                    переключения, сопоставляемые в точности с переданными.
                didit_internal_id_list:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: >-
                    Внутренние идентификаторы пользователей в Didit для
                    переключения: `didit_internal_id`, возвращаемый endpoints
                    создания, получения и вывода списка.
            examples:
              Estimate first:
                summary: Предварительный просмотр стоимости без записи
                value:
                  is_enabled: true
                  estimate_only: true
                  vendor_data_list:
                    - user-123
                    - user-456
              Enable:
                summary: Включить мониторинг для двух пользователей
                value:
                  is_enabled: true
                  vendor_data_list:
                    - user-123
                    - user-456
              Disable:
                summary: Отключить мониторинг по внутреннему id Didit
                value:
                  is_enabled: false
                  didit_internal_id_list:
                    - 3f1c0d3e-8f0a-4c2e-9a3d-9b1f5f4a2c11
      responses:
        '200':
          description: >-
            Предварительная оценка (когда `estimate_only` равно true) или
            завершённое задание для выборки, обработанной синхронно.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringToggleResult'
        '202':
          description: >-
            Более крупные выборки обрабатываются в фоновом режиме. Опрашивайте
            endpoint задачи с `job_id`; `results` заполняется по мере обработки
            профилей.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringJob'
        '400':
          description: >-
            Ошибка валидации: отсутствует `is_enabled`, нет селектора или в
            обоих списках суммарно указано более 1000 идентификаторов.
        '401':
          description: Отсутствует или недействителен API-ключ.
        '403':
          description: >-
            Недостаточно средств на балансе для включения мониторинга для этого
            выбора. Ответ содержит `estimate`, чтобы вы могли пополнить баланс
            на нужную сумму.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  estimate:
                    type: object
                    description: >-
                      Предварительный расчёт стоимости. Возвращается напрямую,
                      если estimate_only имеет значение true (ничего не
                      записывается).
                    properties:
                      users_total:
                        type: integer
                        description: Профили, соответствующие выборке.
                      already_enabled:
                        type: integer
                        description: >-
                          Профили, которые уже находятся на мониторинге (при
                          включении действий не требуется; это профили, которые
                          отключаются при деактивации).
                      with_existing_aml:
                        type: integer
                        description: >-
                          Профили, для которых существующий AML-скрининг будет
                          переведён в статус постоянного мониторинга (новый
                          скрининг не проводится).
                      needing_screening:
                        type: integer
                        description: >-
                          Профили без AML-скрининга, для которых скрининг будет
                          проведён впервые (оплачивается как обычный
                          AML-скрининг).
                      skipped_no_identity_data:
                        type: integer
                        description: >-
                          Профили, для которых невозможно провести скрининг
                          из-за отсутствия идентификационных данных.
                      skipped_blocked:
                        type: integer
                        description: >-
                          Заблокированные пользователи, которые будут пропущены
                          (всегда 0 для компаний).
                      estimated_screening_cost_usd:
                        type: number
                        example: 0.2
                        description: Разовая стоимость новых проверок.
                      estimated_annual_monitoring_cost_usd:
                        type: number
                        example: 0.07
                        description: >-
                          Ежегодная стоимость мониторинга профилей, которые
                          будут отслеживаться.
                      balance_sufficient:
                        type: boolean
                        description: >-
                          Покрывает ли баланс организации скрининг плюс первый
                          год мониторинга.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            'https://verification.didit.me/v3/users/aml-monitoring/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"is_enabled": true, "vendor_data_list": ["user-123", "user-456"]}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.users.set_aml_monitoring(
                is_enabled=True,
                estimate_only=True,
                vendor_data_list=["user-123", "user-456"],
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.users.setAmlMonitoring({
              is_enabled: true,
              estimate_only: true,
              vendor_data_list: ["user-123", "user-456"],
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Users.SetAMLMonitoring(ctx, didit.UsersSetAMLMonitoringParams{\n\tIsEnabled:      true,\n\tEstimateOnly:   didit.Bool(true),\n\tVendorDataList: didit.Some([]string{\"user-123\", \"user-456\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.UsersSetAmlMonitoringParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.users().setAmlMonitoring(UsersSetAmlMonitoringParams.builder()
                    .isEnabled(true)
                    .estimateOnly(true)
                    .vendorDataList(List.of("user-123", "user-456"))
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->users->setAmlMonitoring([
                'is_enabled' => true,
                'estimate_only' => true,
                'vendor_data_list' => ['user-123', 'user-456'],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.users.set_aml_monitoring(
              is_enabled: true,
              estimate_only: true,
              vendor_data_list: ["user-123", "user-456"]
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.Users.SetAmlMonitoringAsync(new
            UsersSetAmlMonitoringParams

            {
                IsEnabled = true,
                EstimateOnly = true,
                VendorDataList = new string[] { "user-123", "user-456" },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    AMLMonitoringToggleResult:
      oneOf:
        - type: object
          required:
            - users_total
            - already_enabled
            - with_existing_aml
            - needing_screening
            - skipped_no_identity_data
            - skipped_blocked
            - estimated_screening_cost_usd
            - estimated_annual_monitoring_cost_usd
            - balance_sufficient
            - unmatched
          description: >-
            Предварительный расчёт стоимости. Возвращается напрямую, если
            estimate_only имеет значение true (ничего не записывается).
          properties:
            users_total:
              type: integer
              description: Профили, соответствующие выборке.
            already_enabled:
              type: integer
              description: >-
                Профили, которые уже находятся на мониторинге (при включении
                действий не требуется; это профили, которые отключаются при
                деактивации).
            with_existing_aml:
              type: integer
              description: >-
                Профили, для которых существующий AML-скрининг будет переведён в
                статус постоянного мониторинга (новый скрининг не проводится).
            needing_screening:
              type: integer
              description: >-
                Профили без AML-скрининга, для которых скрининг будет проведён
                впервые (оплачивается как обычный AML-скрининг).
            skipped_no_identity_data:
              type: integer
              description: >-
                Профили, для которых невозможно провести скрининг из-за
                отсутствия идентификационных данных.
            skipped_blocked:
              type: integer
              description: >-
                Заблокированные пользователи, которые будут пропущены (всегда 0
                для компаний).
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: Разовая стоимость новых проверок.
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: >-
                Ежегодная стоимость мониторинга профилей, которые будут
                отслеживаться.
            balance_sufficient:
              type: boolean
              description: >-
                Покрывает ли баланс организации скрининг плюс первый год
                мониторинга.
            unmatched:
              type: array
              items:
                type: string
              description: >-
                Идентификаторы из запроса, которым не подошёл ни один профиль в
                этом приложении, в точности так, как они были отправлены.
        - type: object
          required:
            - job_id
            - status
            - is_enabled
            - target_type
            - total
            - processed
            - outcomes
            - results
            - error
            - created_at
            - completed_at
            - estimate
            - unmatched
          properties:
            job_id:
              type: string
              format: uuid
            status:
              type: string
              enum:
                - PENDING
                - PROCESSING
                - COMPLETED
                - FAILED
            is_enabled:
              type: boolean
              description: >-
                true, если задача включает мониторинг; false, если отключает
                его.
            target_type:
              type: string
              enum:
                - user
                - business
              description: Какое семейство профилей переключает задача.
            total:
              type: integer
              description: Профили, обрабатываемые задачей.
            processed:
              type: integer
              description: Профили, обработанные к настоящему моменту.
            outcomes:
              type: object
              description: >-
                Счётчики результатов по записям. Каждый выбранный профиль
                относится ровно к одному счётчику; ничто не пропускается
                незаметно.
              properties:
                enabled:
                  type: integer
                  description: Мониторинг включен для существующего AML-скрининга.
                screened_and_enabled:
                  type: integer
                  description: >-
                    Новый AML-скрининг был создан (списана оплата) и на нём
                    включён мониторинг.
                already_enabled:
                  type: integer
                  description: >-
                    Мониторинг уже был активен; ничего не изменилось, средства
                    не списывались.
                disabled:
                  type: integer
                  description: Мониторинг отключен для каждого AML-скрининга профиля.
                skipped_no_identity_data:
                  type: integer
                  description: >-
                    Пропущено: в профиле отсутствуют полное имя, дата рождения и
                    страна (для пользователей) или наименование (для компаний),
                    необходимые для проведения проверки.
                skipped_blocked:
                  type: integer
                  description: 'Пропущено: пользователь заблокирован.'
                skipped_sandbox:
                  type: integer
                  description: 'Пропущено: приложение песочницы, скрининг не создается.'
                failed_provider:
                  type: integer
                  description: Скрининг не удалось завершить; повторите попытку позже.
                failed_insufficient_balance:
                  type: integer
                  description: Баланс исчерпан во время выполнения задания.
            results:
              type: array
              description: >-
                Одна запись на каждый обработанный профиль в порядке обработки.
                Пополняется во время выполнения задания; заполняется полностью
                после перехода статуса в COMPLETED. Фиксируется для заданий,
                запущенных через API.
              items:
                type: object
                properties:
                  didit_internal_id:
                    type: string
                    format: uuid
                    description: Внутренний идентификатор профиля в Didit.
                  vendor_data:
                    type: string
                    nullable: true
                    description: Ваш собственный идентификатор профиля.
                  outcome:
                    type: string
                    enum:
                      - enabled
                      - screened_and_enabled
                      - already_enabled
                      - disabled
                      - skipped_no_identity_data
                      - skipped_blocked
                      - skipped_sandbox
                      - failed_provider
                      - failed_insufficient_balance
            error:
              type: string
              nullable: true
              description: >-
                Общее сообщение об ошибке, когда статус FAILED; подробная
                причина сохраняется на стороне платформы.
            created_at:
              type: string
              format: date-time
            completed_at:
              type: string
              format: date-time
              nullable: true
            estimate:
              type: object
              description: >-
                Предварительный расчёт стоимости. Возвращается напрямую, если
                estimate_only имеет значение true (ничего не записывается).
              properties:
                users_total:
                  type: integer
                  description: Профили, соответствующие выборке.
                already_enabled:
                  type: integer
                  description: >-
                    Профили, которые уже находятся на мониторинге (при включении
                    действий не требуется; это профили, которые отключаются при
                    деактивации).
                with_existing_aml:
                  type: integer
                  description: >-
                    Профили, для которых существующий AML-скрининг будет
                    переведён в статус постоянного мониторинга (новый скрининг
                    не проводится).
                needing_screening:
                  type: integer
                  description: >-
                    Профили без AML-скрининга, для которых скрининг будет
                    проведён впервые (оплачивается как обычный AML-скрининг).
                skipped_no_identity_data:
                  type: integer
                  description: >-
                    Профили, для которых невозможно провести скрининг из-за
                    отсутствия идентификационных данных.
                skipped_blocked:
                  type: integer
                  description: >-
                    Заблокированные пользователи, которые будут пропущены
                    (всегда 0 для компаний).
                estimated_screening_cost_usd:
                  type: number
                  example: 0.2
                  description: Разовая стоимость новых проверок.
                estimated_annual_monitoring_cost_usd:
                  type: number
                  example: 0.07
                  description: >-
                    Ежегодная стоимость мониторинга профилей, которые будут
                    отслеживаться.
                balance_sufficient:
                  type: boolean
                  description: >-
                    Покрывает ли баланс организации скрининг плюс первый год
                    мониторинга.
            unmatched:
              type: array
              items:
                type: string
              description: >-
                Идентификаторы из запроса, которым не подошёл ни один профиль в
                этом приложении, в точности так, как они были отправлены. Они не
                являются частью задачи.
    AMLMonitoringJob:
      type: object
      properties:
        job_id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
        is_enabled:
          type: boolean
          description: true, если задача включает мониторинг; false, если отключает его.
        target_type:
          type: string
          enum:
            - user
            - business
          description: Какое семейство профилей переключает задача.
        total:
          type: integer
          description: Профили, обрабатываемые задачей.
        processed:
          type: integer
          description: Профили, обработанные к настоящему моменту.
        outcomes:
          type: object
          description: >-
            Счётчики результатов по записям. Каждый выбранный профиль относится
            ровно к одному счётчику; ничто не пропускается незаметно.
          properties:
            enabled:
              type: integer
              description: Мониторинг включен для существующего AML-скрининга.
            screened_and_enabled:
              type: integer
              description: >-
                Новый AML-скрининг был создан (списана оплата) и на нём включён
                мониторинг.
            already_enabled:
              type: integer
              description: >-
                Мониторинг уже был активен; ничего не изменилось, средства не
                списывались.
            disabled:
              type: integer
              description: Мониторинг отключен для каждого AML-скрининга профиля.
            skipped_no_identity_data:
              type: integer
              description: >-
                Пропущено: в профиле отсутствуют полное имя, дата рождения и
                страна (для пользователей) или наименование (для компаний),
                необходимые для проведения проверки.
            skipped_blocked:
              type: integer
              description: 'Пропущено: пользователь заблокирован.'
            skipped_sandbox:
              type: integer
              description: 'Пропущено: приложение песочницы, скрининг не создается.'
            failed_provider:
              type: integer
              description: Скрининг не удалось завершить; повторите попытку позже.
            failed_insufficient_balance:
              type: integer
              description: Баланс исчерпан во время выполнения задания.
        results:
          type: array
          description: >-
            Одна запись на каждый обработанный профиль в порядке обработки.
            Пополняется во время выполнения задания; заполняется полностью после
            перехода статуса в COMPLETED. Фиксируется для заданий, запущенных
            через API.
          items:
            type: object
            properties:
              didit_internal_id:
                type: string
                format: uuid
                description: Внутренний идентификатор профиля в Didit.
              vendor_data:
                type: string
                nullable: true
                description: Ваш собственный идентификатор профиля.
              outcome:
                type: string
                enum:
                  - enabled
                  - screened_and_enabled
                  - already_enabled
                  - disabled
                  - skipped_no_identity_data
                  - skipped_blocked
                  - skipped_sandbox
                  - failed_provider
                  - failed_insufficient_balance
        error:
          type: string
          nullable: true
          description: >-
            Общее сообщение об ошибке, когда статус FAILED; подробная причина
            сохраняется на стороне платформы.
        created_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
        estimate:
          type: object
          description: >-
            Предварительный расчёт стоимости. Возвращается напрямую, если
            estimate_only имеет значение true (ничего не записывается).
          properties:
            users_total:
              type: integer
              description: Профили, соответствующие выборке.
            already_enabled:
              type: integer
              description: >-
                Профили, которые уже находятся на мониторинге (при включении
                действий не требуется; это профили, которые отключаются при
                деактивации).
            with_existing_aml:
              type: integer
              description: >-
                Профили, для которых существующий AML-скрининг будет переведён в
                статус постоянного мониторинга (новый скрининг не проводится).
            needing_screening:
              type: integer
              description: >-
                Профили без AML-скрининга, для которых скрининг будет проведён
                впервые (оплачивается как обычный AML-скрининг).
            skipped_no_identity_data:
              type: integer
              description: >-
                Профили, для которых невозможно провести скрининг из-за
                отсутствия идентификационных данных.
            skipped_blocked:
              type: integer
              description: >-
                Заблокированные пользователи, которые будут пропущены (всегда 0
                для компаний).
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: Разовая стоимость новых проверок.
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: >-
                Ежегодная стоимость мониторинга профилей, которые будут
                отслеживаться.
            balance_sufficient:
              type: boolean
              description: >-
                Покрывает ли баланс организации скрининг плюс первый год
                мониторинга.
        unmatched:
          type: array
          items:
            type: string
          description: >-
            Идентификаторы из запроса, которым не подошёл ни один профиль в этом
            приложении, в точности так, как они были отправлены. Они не являются
            частью задачи.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в
        Business Console. Основной ключ имеет полный доступ. Именованный ключ
        может иметь ограниченную область действия: без доступа, чтение или
        запись для каждого ресурса, ограничение определенными сценариями или
        одобренными сессиями, списком IP-адресов и сроком действия. 401
        означает, что ключ неверен, отозван или его срок действия истек; 403
        означает, что ключ не был передан, у ключа нет доступа к этому ресурсу
        или действию, либо запрос поступил с адреса вне его списка IP-адресов;
        404 на маршруте сессии означает, что сессия не входит в сценарии или
        статусы ключа. Ключ без доступа к медиа получает URL изображений, видео
        и PDF как null, а ключ без прав на запись сессий получает ссылки на
        сессии и токены как null. См. https://docs.didit.me/console/api-keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.