> ## 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.

# Cumplimiento por persona

> Recree la exportación de cumplimiento de capacitación por persona de un proveedor anterior a partir de las asignaciones, inscripciones y cursos de /v1.

Este informe es la parte de capacitación de la exportación de cumplimiento por persona de un proveedor anterior: identidad del directorio más una fila por persona y por inscripción a la capacitación (estado y fechas del módulo).

El nivel de detalle es de formato largo (persona × asignación), porque es lo que
`GET /v1/assignments/{id}/enrollments` ya devuelve. La consulta no
transforma los módulos en columnas.

<Note>
  Las confirmaciones de lectura de políticas no forman parte de este informe. Living Security no
  tiene una API de aceptación de políticas, por lo que esas columnas heredadas quedan fuera del alcance y no son una asignación
  pendiente. Consulte [Diferencias con la exportación heredada](#diferencias-con-la-exportaci%C3%B3n-heredada).
</Note>

La configuración, las credenciales, la paginación y el reintento por límite de velocidad son los mismos que en la
[guía de conectividad de Power BI / Excel](/es/developers/v1/powerbi). Agregue primero la consulta compartida
`Fn_FetchAll`; este informe la invoca por su nombre.

## Ámbitos de clave necesarios

| Ámbito | Se usa para |
| - | - |
| `training:read` | `GET /v1/assignments` y `GET /v1/assignments/{id}/enrollments` |
| `course:read` | `GET /v1/courses` (títulos del catálogo) |

## Endpoints de origen

| Endpoint | Función |
| - | - |
| `GET /v1/assignments` | Lista de asignaciones: `assignment_id`, título, `course_id`, estado del ciclo de vida, `created_at`. La consulta no filtra por estado, por lo que aparecen las asignaciones activas, pausadas y completadas (cumplimiento histórico). |
| `GET /v1/assignments/{id}/enrollments` | Progreso por alumno. Un recorrido paginado por asignación. Este es el nivel de detalle de los hechos y el único recurso de `/v1` de este informe que incluye el correo electrónico como clave de unión para los informes. |
| `GET /v1/courses` | Resuelve `course_id` → título del curso (el nombre del módulo de capacitación). `Assignment.title` es una etiqueta de campaña, no el nombre del módulo. |

Esta consulta **no** llama a `GET /v1/entities`. La fila de inscripción
ya incluye `email` y `display_name`, y la lista de entidades no tiene
departamento ni puesto, por lo que recorrerla no completaría las columnas del directorio
que la fila de inscripción no tenga ya.

### Nivel de detalle

Una fila por inscripción (persona × asignación). Una persona a la que se asigna el mismo
curso mediante dos asignaciones genera dos filas. Una persona sin
inscripciones no aparece: `/v1` no puede generar una fila de directorio utilizable
sin correo electrónico, y crear filas solo de personas mezclaría niveles de detalle.

Presupuesto de solicitudes: un recorrido paginado por asignación, de forma secuencial, dentro del
límite de velocidad compartido por clave. Establezca siempre `limit = "500"`.

## Asignación de columnas

Los nombres de las columnas heredadas provienen de la exportación de su proveedor anterior. Los campos de `/v1`
son los nombres de la API pública; la consulta asigna alias a algunos de ellos para el informe.

| Columna heredada | Campo o derivación de `/v1` | Columna del informe |
| - | - | - |
| Email | `Enrollment.email` | `email` |
| Full name | `Enrollment.display_name` | `full_name` |
| Department | No está en `/v1` | Omitida, no establecida como nula |
| Other directory (title, manager, location, …) | No está en `/v1`: las entidades solo incluyen correo electrónico y nombre para mostrar. | Omitida |
| Training module / course name | `Course.title`, con `Assignment.title` como alternativa | `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` (es posible que la exportación heredada no lo tuviera; se incluye porque la API lo ofrece) | `due_at` |
| Policy acceptance / acknowledgement | Sin dominio de políticas | Omitida |
| Policy name, accepted date | Sin dominio de políticas | Omitida |

Claves de unión conservadas para un modelo de esquema en estrella: `entity_id`, `assignment_id`,
`course_id`, `user_assignment_id`.

La consulta también conserva `course_slug`, `assignment_title`, `passed`,
`attempts`, `assignment_lifecycle_status` y `assignment_created_at`.
`enrollment_status` es el progreso del alumno, no el ciclo de vida de la asignación
(`active` / `paused` / `completed`).

## Diferencias con la exportación heredada

* **Las aceptaciones de políticas no están disponibles.** Esta plataforma no tiene un dominio
  de políticas: no existe `/policies`, `/policy_acceptances` ni un recurso
  `/v1` equivalente. No considere esas columnas como una asignación pendiente. Están
  fuera del alcance.
* **Los datos adicionales del directorio se omiten, no se establecen como nulos.** El departamento, el puesto,
  el responsable y la ubicación no están en `/v1`. La consulta no crea columnas
  vacías para ellos.
* **Se incluye la fecha de vencimiento** aunque la exportación heredada no la tuviera,
  porque `Enrollment.due_at` está disponible en la API.
* **El nombre del curso prioriza el título del catálogo.** `Course.title` es el nombre
  del módulo. `Assignment.title` se usa solo cuando falta la fila del catálogo
  (eliminada o no publicada).
* **Formato largo, sin transformar en columnas.** Una fila por inscripción, no una fila por
  persona con una columna por módulo.

## Siguientes pasos

<CardGroup cols={2}>
  <Card title="Configuración de Power BI y Excel" href="/es/developers/v1/powerbi">
    Credenciales, paginación y carga de estas consultas en Power BI o Excel.
  </Card>

  <Card title="Registro de phishing por correo electrónico" href="/es/developers/v1/reports/email-phishing-log">
    Interacciones de phishing a nivel de evento de los últimos 12 meses.
  </Card>

  <Card title="Usuarios más susceptibles" href="/es/developers/v1/reports/most-susceptible-users">
    Resumen por persona de clics, credenciales y reportes de los últimos 12 meses.
  </Card>

  <Card title="Claves de API" href="/es/developers/developer-hub/api-keys">
    Conceda `training:read` y `course:read` a la clave que actualiza este informe.
  </Card>
</CardGroup>


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