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

# Compliance per persoon

> Maak de Training-complianceexport per persoon van een eerdere provider opnieuw op basis van /v1-assignments, -enrollments en -courses.

Dit rapport vormt het Training-deel van de complianceexport per persoon van een eerdere provider: directory-identiteit plus één rij per persoon per Training-inschrijving (modulestatus en datums).

De granulariteit is long-form — persoon × assignment — omdat dit is wat
`GET /v1/assignments/{id}/enrollments` al retourneert. De query zet modules niet
om naar kolommen (pivot).

<Note>
  Beleidsbevestigingen maken geen deel uit van dit rapport. Living Security heeft
  geen API voor beleidsacceptatie, dus die legacykolommen vallen buiten de scope en zijn geen
  openstaande mapping. Zie [Afwijkingen ten opzichte van de legacy-export](#afwijkingen-ten-opzichte-van-de-legacy-export).
</Note>

Installatie, inloggegevens, paginering en nieuwe pogingen bij rate limiting zijn hetzelfde als in de
[connectiviteitshandleiding voor Power BI / Excel](/nl/developers/v1/powerbi). Voeg eerst de gedeelde
`Fn_FetchAll`-query toe; dit rapport roept deze bij naam aan.

## Vereiste sleutelscopes

| Scope | Gebruikt voor |
| - | - |
| `training:read` | `GET /v1/assignments` en `GET /v1/assignments/{id}/enrollments` |
| `course:read` | `GET /v1/courses` (catalogustitels) |

## Bronendpoints

| Endpoint | Rol |
| - | - |
| `GET /v1/assignments` | Assignmentlijst: `assignment_id`, titel, `course_id`, levenscyclusstatus, `created_at`. De query filtert niet op status, dus actieve, gepauzeerde en voltooide assignments komen allemaal voor (historische compliance). |
| `GET /v1/assignments/{id}/enrollments` | Voortgang per Cursist. Eén gepagineerde doorloop per assignment. Dit is de feitengranulariteit en de enige `/v1`-resource in dit rapport die e-mail als join-sleutel voor rapportage bevat. |
| `GET /v1/courses` | Zet `course_id` om naar de cursustitel (de naam van de Training-module). `Assignment.title` is een campagnelabel, niet de modulenaam. |

Deze query roept `GET /v1/entities` **niet** aan. De enrollment-rij
bevat al `email` en `display_name`, en de entiteitenlijst heeft geen
afdeling of functietitel — het doorlopen ervan zou dus geen directorykolommen vullen
die de enrollment-rij nog niet heeft.

### Granulariteit

Eén rij per enrollment (persoon × assignment). Een persoon die dezelfde
cursus via twee assignments toegewezen krijgt, levert twee rijen op. Een persoon zonder
enrollments komt niet voor — `/v1` kan zonder
e-mail geen bruikbare directory-rij genereren, en het verzinnen van rijen met alleen een persoon zou granulariteiten door elkaar halen.

Aanvraagbudget: één gepagineerde doorloop per assignment, achtereenvolgens, binnen de
gedeelde rate limit per sleutel. Stel altijd `limit = "500"` in.

## Kolommapping

De legacykolomnamen komen uit de export van uw vorige provider. `/v1`-velden
zijn de openbare API-namen; de query gebruikt voor sommige ervan aliassen in het rapport.

| Legacykolom | `/v1`-veld of afleiding | Rapportkolom |
| - | - | - |
| E-mail | `Enrollment.email` | `email` |
| Volledige naam | `Enrollment.display_name` | `full_name` |
| Afdeling | Niet aanwezig op `/v1` | Weggelaten, niet op null gezet |
| Overige directorygegevens (functie, manager, locatie, …) | Niet aanwezig op `/v1` — entiteiten bevatten alleen e-mail en weergavenaam. | Weggelaten |
| Trainingsmodule / cursusnaam | `Course.title`, met `Assignment.title` als terugvaloptie | `course_name` |
| Assignment- / modulestatus | `Enrollment.status` — `not_started` \| `in_progress` \| `completed` \| `overdue` \| `withdrawn` | `enrollment_status` |
| Toewijzingsdatum | `Enrollment.assigned_at` | `assigned_at` |
| Voltooiingsdatum | `Enrollment.completed_at` | `completed_at` |
| Deadline | `Enrollment.due_at` (de legacy-export had dit mogelijk niet; opgenomen omdat de API het wel biedt) | `due_at` |
| Beleidsacceptatie / -bevestiging | Geen beleidsdomein | Weggelaten |
| Beleidsnaam, acceptatiedatum | Geen beleidsdomein | Weggelaten |

Join-sleutels die behouden blijven voor een sterschemamodel: `entity_id`, `assignment_id`,
`course_id`, `user_assignment_id`.

De query behoudt ook `course_slug`, `assignment_title`, `passed`,
`attempts`, `assignment_lifecycle_status` en `assignment_created_at`.
`enrollment_status` is de voortgang van de Cursist, niet de levenscyclus van de assignment
(`active` / `paused` / `completed`).

## Afwijkingen ten opzichte van de legacy-export

* **Beleidsacceptaties zijn niet beschikbaar.** Dit platform heeft geen
  beleidsdomein — er is geen `/policies`, `/policy_acceptances` of gelijkwaardige
  `/v1`-resource. Beschouw die kolommen niet als een openstaande mapping. Ze
  vallen buiten de scope.
* **Extra directorygegevens worden weggelaten, niet op null gezet.** Afdeling, functietitel,
  manager en locatie zijn niet aanwezig op `/v1`. De query verzint geen lege
  kolommen hiervoor.
* **Deadline is opgenomen**, ook als de legacy-export die niet had,
  omdat `Enrollment.due_at` beschikbaar is in de API.
* **Cursusnaam geeft de voorkeur aan de catalogustitel.** `Course.title` is de
  modulenaam. `Assignment.title` wordt alleen gebruikt wanneer de catalogusrij ontbreekt
  (verwijderd of niet gepubliceerd).
* **Long-form, niet gepivoteerd.** Eén rij per enrollment, niet één rij per
  persoon met een kolom per module.

## Volgende stappen

<CardGroup cols={2}>
  <Card title="Power BI- en Excel-installatie" href="/nl/developers/v1/powerbi">
    Inloggegevens, paginering en het laden van deze queries in Power BI of Excel.
  </Card>

  <Card title="Phishing-e-maillogboek" href="/nl/developers/v1/reports/email-phishing-log">
    Phishinginteracties op gebeurtenisniveau over de afgelopen 12 maanden.
  </Card>

  <Card title="Meest vatbare gebruikers" href="/nl/developers/v1/reports/most-susceptible-users">
    Samenvatting per persoon van klikken, inloggegevens en meldingen over 12 maanden.
  </Card>

  <Card title="API-sleutels" href="/nl/developers/developer-hub/api-keys">
    Verleen `training:read` en `course:read` aan de sleutel die dit rapport ververst.
  </Card>
</CardGroup>


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