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

# Соответствие требованиям по каждому сотруднику

> Воссоздайте экспорт данных о соответствии требованиям к обучению по каждому сотруднику от предыдущего поставщика на основе назначений, зачислений и курсов из /v1.

Этот отчёт представляет собой часть экспорта данных о соответствии требованиям по каждому сотруднику от предыдущего поставщика, относящуюся к обучению: идентификационные данные из каталога плюс одна строка на каждого сотрудника для каждого зачисления на обучение (статус модуля и даты).

Детализация строится в длинном формате — сотрудник × назначение, — поскольку именно такие данные
`GET /v1/assignments/{id}/enrollments` уже возвращает. Запрос не
преобразует модули в столбцы.

<Note>
  Подтверждения ознакомления с политиками в этот отчёт не входят. В Living Security
  нет API для принятия политик, поэтому соответствующие устаревшие столбцы находятся вне области применения и не ожидают сопоставления. См. [Отличия от устаревшего экспорта](#%D0%BE%D1%82%D0%BB%D0%B8%D1%87%D0%B8%D1%8F-%D0%BE%D1%82-%D1%83%D1%81%D1%82%D0%B0%D1%80%D0%B5%D0%B2%D1%88%D0%B5%D0%B3%D0%BE-%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%B0).
</Note>

Настройка, учётные данные, постраничная выгрузка и повтор запросов при превышении лимита частоты такие же, как в
[руководстве по подключению Power BI / Excel](/ru/developers/v1/powerbi). Сначала добавьте общий
запрос `Fn_FetchAll`; этот отчёт вызывает его по имени.

## Необходимые области действия ключа

| Область действия | Назначение |
| - | - |
| `training:read` | `GET /v1/assignments` и `GET /v1/assignments/{id}/enrollments` |
| `course:read` | `GET /v1/courses` (названия из каталога) |

## Исходные конечные точки

| Конечная точка | Роль |
| - | - |
| `GET /v1/assignments` | Список назначений: `assignment_id`, название, `course_id`, статус жизненного цикла, `created_at`. Запрос не фильтрует по статусу, поэтому отображаются активные, приостановленные и завершённые назначения (историческое соответствие требованиям). |
| `GET /v1/assignments/{id}/enrollments` | Прогресс каждого обучающегося. Один постраничный проход на каждое назначение. Это гранулярность фактов и единственный ресурс `/v1` в этом отчёте, который содержит адрес электронной почты в качестве ключа соединения для отчётности. |
| `GET /v1/courses` | Преобразует `course_id` в название курса (название учебного модуля). `Assignment.title` — это метка кампании, а не название модуля. |

Этот запрос **не** вызывает `GET /v1/entities`. Строка зачисления
уже содержит `email` и `display_name`, а в списке сущностей нет
подразделения и должности, поэтому его обход не заполнит столбцы каталога,
которых нет в строке зачисления.

### Гранулярность

Одна строка на зачисление (сотрудник × назначение). Если сотруднику назначен один и тот же
курс через два назначения, получается две строки. Сотрудник без
зачислений в отчёт не попадает: `/v1` не может сформировать пригодную строку каталога
без адреса электронной почты, а добавление строк только с данными сотрудника привело бы к смешению уровней детализации.

Бюджет запросов: один постраничный проход на каждое назначение, последовательно, в рамках
общего лимита частоты на ключ. Всегда задавайте `limit = "500"`.

## Сопоставление столбцов

Названия устаревших столбцов взяты из экспорта вашего предыдущего поставщика. Поля `/v1` —
это имена из публичного API; запрос переименовывает некоторые из них для отчёта.

| Устаревший столбец | Поле или способ получения в `/v1` | Столбец отчёта |
| - | - | - |
| Email | `Enrollment.email` | `email` |
| Full name | `Enrollment.display_name` | `full_name` |
| Department | Отсутствует в `/v1` | Опущен, не заполняется значением null |
| Прочие данные каталога (должность, руководитель, местоположение и т. д.) | Отсутствуют в `/v1` — сущности содержат только адрес электронной почты и отображаемое имя. | Опущены |
| Training module / course name | `Course.title`, при отсутствии — `Assignment.title` | `course_name` |
| Assignment / module status | `Enrollment.status` — `not_started` \| `in_progress` \| `completed` \| `overdue` \| `withdrawn` | `enrollment_status` |
| Assigned date | `Enrollment.assigned_at` | `assigned_at` |
| Completed date | `Enrollment.completed_at` | `completed_at` |
| Due date | `Enrollment.due_at` (в устаревшем экспорте этого поля могло не быть; оно включено, так как есть в API) | `due_at` |
| Policy acceptance / acknowledgement | Нет домена политик | Опущен |
| Policy name, accepted date | Нет домена политик | Опущены |

Ключи соединения, сохранённые для модели «звезда»: `entity_id`, `assignment_id`,
`course_id`, `user_assignment_id`.

Запрос также сохраняет `course_slug`, `assignment_title`, `passed`,
`attempts`, `assignment_lifecycle_status` и `assignment_created_at`.
`enrollment_status` — это прогресс обучающегося, а не жизненный цикл назначения
(`active` / `paused` / `completed`).

## Отличия от устаревшего экспорта

* **Данные о принятии политик недоступны.** В этой платформе нет домена политик — нет ни `/policies`, ни `/policy_acceptances`, ни эквивалентного ресурса
  `/v1`. Не рассматривайте эти столбцы как ожидающие сопоставления. Они
  находятся вне области применения.
* **Дополнительные данные каталога опущены, а не заполняются значением null.** Подразделение, должность,
  руководитель и местоположение отсутствуют в `/v1`. Запрос не создаёт
  для них пустые столбцы.
* **Срок выполнения включён**, даже если его не было в устаревшем экспорте,
  поскольку `Enrollment.due_at` есть в API.
* **Название курса берётся преимущественно из каталога.** `Course.title` — это название
  модуля. `Assignment.title` используется только при отсутствии строки каталога
  (удалённой или неопубликованной).
* **Длинный формат, без сводной таблицы.** Одна строка на зачисление, а не одна строка на
  сотрудника со столбцом для каждого модуля.

## Следующие шаги

<CardGroup cols={2}>
  <Card title="Настройка Power BI и Excel" href="/ru/developers/v1/powerbi">
    Учётные данные, постраничная выгрузка и загрузка этих запросов в Power BI или Excel.
  </Card>

  <Card title="Журнал фишинговых писем" href="/ru/developers/v1/reports/email-phishing-log">
    Фишинговые взаимодействия на уровне событий за последние 12 месяцев.
  </Card>

  <Card title="Наиболее уязвимые пользователи" href="/ru/developers/v1/reports/most-susceptible-users">
    Сводка по каждому сотруднику за 12 месяцев: переходы по ссылкам, ввод учётных данных и сообщения о письмах.
  </Card>

  <Card title="Ключи API" href="/ru/developers/developer-hub/api-keys">
    Предоставьте `training:read` и `course:read` ключу, который обновляет этот отчёт.
  </Card>
</CardGroup>


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