> ## 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-скрининге: совпадения, оценки и JSON

> Разбирайте ответы AML-скрининга Didit: совпадения, санкции, PEP, негативные СМИ, оценки риска, оценки совпадения и постоянный мониторинг.

## Обзор

AML-скрининг сверяет личность верифицированного субъекта с глобальными наборами данных о санкциях, политически значимых лицах (PEP), списках наблюдения и негативных публикациях в СМИ. Каждое совпадение возвращает найденную сущность, набор(ы) данных, в которых обнаружено совпадение, две оценки — `match_score` (оценка уверенности совпадения личности) и `risk_score` (оценка риска сущности) — а также структурированную разбивку по источникам (`pep_matches[]`, `sanction_matches[]`, `warning_matches[]`, `adverse_media_matches[]`). Итоговый `score` представляет собой наивысший `risk_score` среди совпадений, не помеченных как `False Positive`.

Такая же структура возвращается AML-скринингом в сессиях пользователей (KYC), сессиях компаний (KYB) и в автономном API AML-скрининга.

![Скриншот отчёта Didit по AML-скринингу с совпадениями по санкциям, PEP и негативным публикациям в СМИ](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/aml-screening-report.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=5b74561abdd242f108fee1b429ff5020)

## Где это отображается в ответах API

В endpoint решения сессии AML-скрининг возвращается в виде массива во множественном числе **`aml_screenings[]`**. Каждая запись соответствует одному выполнению AML в сценарии (проверка AML, запущенная дважды, сформирует две записи с разными значениями `node_id`).

```text theme={null}
GET /v3/session/{sessionId}/decision/
  ──▶ { "aml_screenings": [ { node_id, status, total_hits, hits, … }, … ] }
```

Автономный AML и сессии компаний возвращают ту же структуру для каждой записи. Поля ниже соответствуют канонической схеме на странице [Модели данных](https://docs.didit.me/ru/reference/data-models.md#aml-скрининг).

## Три оценки, а не один вердикт

Статус `status` представляет собой вердикт; числовые значения, на основе которых он был сформирован, находятся в том же payload. Используйте их при построении собственной градации рисков (например, объединяя AML-риск с ответами из анкет, такими как источник благосостояния или самостоятельное декларирование статуса PEP), вместо того чтобы ветвить логику исключительно по значениям `Approved` / `In Review` / `Declined`:

| Оценка | Где находится | Шкала | Что определяет |
| - | - | - | - |
| `hits[].match_score` | для каждого совпадения | 0-100 | Является ли найденная сущность тем же лицом, которое проверяется? Определяет начальный `review_status` совпадения. |
| `hits[].risk_score` | для каждого совпадения | 0-100 | Насколько рискованна найденная сущность? Зависит от категорий совпадения (санкции, PEP, преступления и т. д.). |
| `score` | для всего скрининга | 0-100 | Наивысший `risk_score` среди совпадений, не помеченных как `False Positive`. Именно с ним сравниваются пороги одобрения и проверки для формирования `status`. |

Все три оценки присутствуют во всех местах, где предоставляется AML-отчёт: `GET /v3/session/{sessionId}/decision/`, объект `decision` в webhook-событиях `status.updated` и `data.updated` во **всех** версиях webhook (массив V3 `aml_screenings[]` и устаревшее единичное поле `aml` в V2 / V1), а также в автономном API AML-скрининга. Если клиент видит только метку о наличии или отсутствии флагов, он считывает только `status` (или `review_status` совпадения) и пропускает расположенные рядом числовые оценки. В консоли отображаются те же числа: в заголовке раздела AML выводится совокупная **оценка риска**, а в каждой строке таблицы совпадений выводятся **оценка совпадения** и **оценка риска** с детализацией при наведении.

## Схема

Каноническая схема приведена в разделе [AML-скрининг в справочнике моделей данных](https://docs.didit.me/ru/reference/data-models.md#aml-скрининг). Поля верхнего уровня:

| Поле | Тип | Примечания |
| - | - | - |
| `status` | `Not Finished` \| `Approved` \| `Declined` \| `In Review` | Статус на уровне функции (`FeatureStatusChoices`). Управляет правилами сценария и экраном ручной проверки. |
| `total_hits` | integer | Количество записей в `hits[]`. `0` при отсутствии совпадений. |
| `entity_type` | `person` \| `company` | Тип проверяемого субъекта. Для компаний и физических лиц используется разная логика сопоставления. |
| `score` | float (0-100) \| null | Совокупная оценка риска AML: максимальная `risk_score` среди совпадений, не помеченных как `False Positive`. `0`, если возможных совпадений нет; `null` до запуска скрининга. |
| `hits` | `Hit[]` | По одной записи на каждое найденное совпадение, **включая** совпадения, автоматически классифицированные как `False Positive` (они остаются в списке, но исключаются из совокупной `score`). См. поля для каждого совпадения ниже. |
| `screened_data` | object | Точные значения, которые Didit отправил на скрининг: `full_name`, `date_of_birth`, `nationality` (ISO 3166-1 alpha-2), `document_number`. Полезно для объяснения совпадения проверяющему или аудита параметров поиска. |
| `is_ongoing_monitoring_enabled` | boolean | `true` после включения постоянного мониторинга для сессии. |
| `next_ongoing_monitoring_bill_date` | string \| null | `YYYY-MM-DD` следующего ежегодного продления **биллинга** (`last_aml_bill_date` + 365 дней). `null`, пока мониторинг не включен. Это не дата скрининга: см. `last_ongoing_screening_at` ниже. |
| `last_ongoing_screening_at` | string (ISO 8601) \| null | Когда в рамках постоянного мониторинга в последний раз был **завершён повторный скрининг** этой записи, независимо от того, изменился ли результат. `null`, если с момента внедрения этого поля запись ни разу не проходила повторный скрининг: оно никогда не заполняется задним числом на основе даты активации или даты биллинга. |
| `last_ongoing_screening_datasets_updated_at` | string (ISO 8601) \| null | Самая актуальная дата обновления наборов данных AML, о которой поставщик сообщил на момент скрининга. `null`, если поставщик не передал даты наборов данных; она никогда не оценивается. |
| `warnings` | `Warning[]` | Теги предупреждений, специфичных для AML. См. [Предупреждения AML](https://docs.didit.me/ru/core-technology/aml-screening/warnings-aml-screening.md). |
| `node_id` | string \| null | Идентифицирует узел графа сценария, который создал данное выполнение AML в ответах сессий `/v3/`. В ответе отдельного API AML поле опускается. |

### Поля для каждого совпадения

Каждая запись в `hits[]` содержит следующие поля (показана часть). Массивы источников совпадений (`pep_matches[]`, `sanction_matches[]`, `warning_matches[]`, `adverse_media_matches[]`) заполняются только для тех наборов данных, к которым относится совпадение.

| Поле | Тип | Примечания |
| - | - | - |
| `id` | string | Постоянный идентификатор совпадения: `hit_` и 24 шестнадцатеричных символа. Та же найденная сущность сохраняет тот же `id` при повторном скрининге субъекта. Используйте его как `hit_id` при обновлении `review_status` через endpoint статуса совпадения AML. |
| `caption` | string | Основное имя сущности, сохраненное в наборе данных. |
| `datasets` | string\[] | Категории риска, в которых числится сущность: `PEP` (с указанием уровня от `PEP Level 1` до `PEP Level 4`), `Sanctions`, `Adverse Media`, `Warnings and Regulatory Enforcement`, `Fitness and Probity`, `SIP`, `SIE` или `Insolvency`, а также `Other Lists`, если в источнике сущности ничего из этого не указано. |
| `match_score` | number (0-100) | Уверенность в личности: насколько вероятно, что совпадение относится к тому же человеку. Совпадения с оценкой ниже `aml_match_score_threshold` (по умолчанию `93`) изначально получают статус `False Positive`; равные ему или выше, изначально получают статус `Unreviewed`. См. [Оценка совпадения AML](https://docs.didit.me/ru/core-technology/aml-screening/aml-match-score.md). |
| `risk_score` | number (0-100) | Риск сущности: уровень риска найденной сущности. Наивысшая `risk_score` среди совпадений, отличных от `False Positive`, становится значением `score` верхнего уровня. См. [Оценка риска AML](https://docs.didit.me/ru/core-technology/aml-screening/aml-risk-score.md). |
| `score` | number (0-1) | **Устарело**: взвешенная оценка совпадения. Вместо этого используйте `match_score`. |
| `match` | boolean \| null | Устаревший флаг точного совпадения. Рекомендуется использовать `match_score` + `review_status`. |
| `target` | boolean \| null | Является ли сущность прямым объектом включения в список. |
| `review_status` | `Unreviewed` \| `Confirmed Match` \| `False Positive` \| `Inconclusive` | Исходное значение рассчитывается путем сравнения `match_score` и `aml_match_score_threshold`. Может быть изменено через endpoint статуса совпадения AML; его обновление отправляет webhook `data.updated`, но **не** пересчитывает автоматически `status` функции: для этого используйте endpoint статуса AML или проверку в панели управления. |
| `score_breakdown` | object | Способ расчета `match_score`: оценки по имени/дате рождения/стране, веса, вклад параметров и эффект «золотого ключа» номера документа (`MATCH` принудительно устанавливает значение 100, `NEUTRAL` сохраняет базовую оценку, `HARD_MISMATCH` налагает штраф). |
| `properties` | object | Необработанные атрибуты из набора данных (имена, псевдонимы, даты рождения, гражданство и т. д.). Полезно для принятия решения. |
| `url` | string \| null | URL-адрес источника для найденной сущности, если доступен. |
| `rca_name` | string \| null | Если совпадение относится к родственнику или близкому лицу (RCA), имя связанного лица, через которое произошло совпадение. |
| `pep_matches[]` | object\[] | Должности PEP, издатели, даты рождения и образование для совпадения. |
| `sanction_matches[]` | object\[] | Название санкционного списка, программа, орган, наложивший санкции, дата внесения в список и исходные URL-адреса. |
| `warning_matches[]` | object\[] | Записи из общих списков наблюдения или правоприменительных мер. |
| `adverse_media_matches[]` | object\[] | Негативные публикации в СМИ на уровне статей: заголовок, краткое содержание, тональность, исходный URL-адрес, дата публикации, ключевые слова. |
| `adverse_media_details` | object \| null | Совокупная тональность негативных публикаций в СМИ и количество ключевых слов по совпадению. |
| `risk_view` | object | Детализация риска по категориям, странам и преступлениям с учетом весов для совпадения (`risk_level`, `risk_scores`, `weightage`). |
| `linked_entities[]` | object\[] | Связанные сущности, которые набор данных соотносит с совпадением (например, родственники или деловые партнеры). |
| `first_seen` / `last_seen` | string \| null | Когда набор данных впервые/в последний раз зафиксировал эту запись. |
| `additional_information` | object | Дополнительные данные в свободной форме от поставщика наборов данных. |

> [!NOTE]
>
> Совпадения, классифицированные как `False Positive` (поскольку `match_score` оказался ниже порога оценки совпадения или проверяющий отметил их вручную), остаются в `hits[]` для возможности аудита. Они исключаются только из расчета совокупной `score`.

### Постоянный мониторинг

Когда `is_ongoing_monitoring_enabled` имеет значение `true`, Didit непрерывно выполняет повторный скрининг субъекта и повторно отправляет AML-отчёт каждый раз, когда совпадение добавляется, удаляется или изменяется. Повторные скрининги, изменяющие AML-статус, отправляют webhook `status.updated`; повторные скрининги, изменяющие только данные совпадений, отправляют `data.updated`. Окно мониторинга действует в течение 365 дней с даты `last_aml_bill_date`; `next_ongoing_monitoring_bill_date` показывает дату следующего ежегодного продления.

Все эти сигналы зависят от изменений, поэтому субъект, проходящий повторный скрининг месяцами без новых совпадений, не сгенерирует ни одного из них. Поле `last_ongoing_screening_at` является единственным, которое обновляется при **каждом** завершённом запуске, а [endpoint истории скринингов](https://docs.didit.me/ru/core-technology/aml-screening/continuous-monitoring-aml-screening.md#подтверждение-выполнения-мониторинга) перечисляет каждый запуск отдельно — включая те, которые ничего не изменили. Полный жизненный цикл описан в разделе [Постоянный AML-мониторинг](https://docs.didit.me/ru/core-technology/aml-screening/continuous-monitoring-aml-screening.md).

> [!WARNING]
>
> Три даты в этом отчёте означают три разные вещи. `next_ongoing_monitoring_bill_date` указывает дату следующего выставления счёта. `last_ongoing_screening_at` указывает время фактического проведения последнего скрининга субъекта. `last_ongoing_screening_datasets_updated_at` указывает время последнего обновления списков провайдером. Только вторая дата подтверждает фактическое выполнение проверки.

## Значения статуса

| Значение | Описание |
| - | - |
| `Not Finished` | AML-проверка ещё не выполнялась для этой сессии/узла. |
| `Approved` | Совокупная оценка находится на уровне порога одобрения или ниже его (по умолчанию `80`) — в том числе когда совпадения отсутствуют или каждое совпадение отмечено как `False Positive` (оценка `0`). |
| `In Review` | Совокупная оценка выше порога одобрения (и не превышает порог проверки) либо сработал `COULD_NOT_PERFORM_AML_SCREENING`. |
| `Declined` | Совокупная оценка выше порога проверки (по умолчанию `100`, поэтому автоматическое отклонение происходит только при его снижении) либо статус был установлен вручную. |

Пороги настраиваются для каждого узла сценария — см. [Оценка риска AML](https://docs.didit.me/ru/core-technology/aml-screening/aml-risk-score.md). Пользовательские правила статуса объединяются с вычисленным статусом с учётом приоритета `Declined` > `In Review` > `Approved`; проверяющие также могут переопределить AML-статус из консоли или через endpoint статуса AML.

## Примеры

### Approved — без совпадений

```json theme={null}
{
  "aml_screenings": [
    {
      "node_id": "aml-1",
      "status": "Approved",
      "total_hits": 0,
      "entity_type": "person",
      "score": 0,
      "hits": [],
      "screened_data": {
        "full_name": "Jane Doe",
        "nationality": "US",
        "date_of_birth": "1990-06-12",
        "document_number": "P9876543"
      },
      "is_ongoing_monitoring_enabled": false,
      "last_ongoing_screening_at": null,
      "last_ongoing_screening_datasets_updated_at": null,
      "next_ongoing_monitoring_bill_date": null,
      "warnings": []
    }
  ]
}
```

### In Review — совпадение по PEP и негативным публикациям в СМИ

Все имена, URL-адреса и статьи ниже являются вымышленными.

```json theme={null}
{
  "aml_screenings": [
    {
      "node_id": "aml-1",
      "status": "In Review",
      "total_hits": 1,
      "entity_type": "person",
      "score": 85,
      "hits": [
        {
          "id": "hit_7c1e9a40b2d35f86e0a4c912",
          "caption": "John Q. Exampleton",
          "datasets": ["PEP"],
          "match_score": 96,
          "risk_score": 85,
          "score": 0.97,
          "match": false,
          "target": null,
          "review_status": "Unreviewed",
          "properties": {
            "name": ["John Q. Exampleton"],
            "alias": ["Johnny Example"],
            "birthDate": ["1974"],
            "birthPlace": ["Springfield"]
          },
          "score_breakdown": {
            "name_score": 95,
            "name_weight": 60,
            "name_weight_normalized": 70.59,
            "name_contribution": 67.06,
            "dob_score": 100,
            "dob_weight": 25,
            "dob_weight_normalized": 29.41,
            "dob_contribution": 29.41,
            "country_score": 0,
            "country_weight": 15,
            "country_weight_normalized": 0,
            "country_contribution": 0,
            "document_number_match_type": "NEUTRAL",
            "document_number_effect": "No document number provided for screening",
            "total_score": 96
          },
          "pep_matches": [
            {
              "list_name": "Example PEP Registry",
              "publisher": "Example Registry",
              "matched_name": "John Q. Exampleton",
              "pep_position": "Regional council member",
              "date_of_birth": "1974-01-01",
              "place_of_birth": "Springfield",
              "source_url": "https://example.org/registry/entities/Q0000001"
            }
          ],
          "sanction_matches": [],
          "warning_matches": [],
          "adverse_media_matches": [
            {
              "country": "freedonia",
              "headline": "Court opens inquiry into council hiring irregularities",
              "summary": "John Q. Exampleton is named in a legal investigation regarding irregularities in public hiring.",
              "sentiment": "moderately negative",
              "sentiment_score": -2,
              "source_url": "https://example-news.org/articles/12345",
              "publication_date": "2025-06-09T10:19:10",
              "adverse_keywords": ["fraud", "irregularities"]
            }
          ],
          "adverse_media_details": {
            "sentiment": "Moderately Negative",
            "sentiment_score": -2,
            "entity_type": "person",
            "adverse_keywords": { "fraud": 3, "corruption": 2 }
          },
          "risk_view": {
            "categories": { "score": 100.0, "weightage": 50, "risk_level": "High", "risk_scores": { "PEP": 100.0 } },
            "countries":  { "score": 0.0,   "weightage": 30, "risk_level": "Low",  "risk_scores": {} },
            "crimes":     { "score": 0.0,   "weightage": 20, "risk_level": "Low",  "risk_scores": {} },
            "custom_list": {}
          },
          "linked_entities": [
            { "name": ["Mary Exampleton"], "relation": [], "details": [], "active": [], "status": [] }
          ],
          "first_seen": "2025-01-18T00:00:00",
          "last_seen": "2025-06-13T00:00:00"
        }
      ],
      "screened_data": {
        "full_name": "John Q. Exampleton",
        "nationality": "US",
        "date_of_birth": "1974-01-01",
        "document_number": null
      },
      "is_ongoing_monitoring_enabled": true,
      "next_ongoing_monitoring_bill_date": "2027-05-17",
      "warnings": [
        {
          "feature": "AML",
          "risk": "POSSIBLE_MATCH_FOUND",
          "additional_data": null,
          "log_type": "warning",
          "short_description": "Possible match found in AML screening",
          "long_description": "The Anti-Money Laundering (AML) screening process identified potential matches with watchlists or high-risk databases, requiring further review.",
          "node_id": "aml-1"
        }
      ]
    }
  ]
}
```

## Связанные разделы

* [Предупреждения AML](https://docs.didit.me/ru/core-technology/aml-screening/warnings-aml-screening.md) — все коды предупреждений, которые может формировать AML
* [Оценка риска AML](https://docs.didit.me/ru/core-technology/aml-screening/aml-risk-score.md) и [Оценка совпадения AML](https://docs.didit.me/ru/core-technology/aml-screening/aml-match-score.md) — как рассчитываются обе оценки
* [Постоянный AML-мониторинг](https://docs.didit.me/ru/core-technology/aml-screening/continuous-monitoring-aml-screening.md) — включение и обработка событий мониторинга
* [База данных списков наблюдения](https://docs.didit.me/ru/core-technology/aml-screening/watchlist-database-aml-screening.md) — охваченные наборы данных
* [Модели данных — AML-скрининг](https://docs.didit.me/ru/reference/data-models.md#aml-скрининг) — каноническая схема
* [Webhooks](https://docs.didit.me/ru/integration/webhooks.md) — `status.updated` срабатывает, когда AML изменяет статус сессии; изменения статуса проверки совпадений и обновления данных мониторинга отправляют `data.updated`


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