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

# Conformité par personne

> Recréez l'export de conformité de formation par personne d'un fournisseur précédent à partir des affectations, des inscriptions et des cours de l'API /v1.

Ce rapport constitue le volet Formation de l'export de conformité par personne d'un fournisseur précédent : identité issue de l'annuaire, puis une ligne par personne et par inscription à une formation (statut et dates du module).

La granularité est de type long — personne × affectation — car c'est ce que `GET /v1/assignments/{id}/enrollments` renvoie déjà. La requête ne transforme pas les modules en colonnes (pas de pivot).

<Note>
  Les attestations de prise de connaissance des politiques ne font pas partie de ce rapport. Living Security ne dispose d'aucune API d'acceptation des politiques ; ces colonnes héritées sont donc hors périmètre et ne font l'objet d'aucune correspondance en attente. Consultez [Différences par rapport à l'export hérité](#diff%C3%A9rences-par-rapport-%C3%A0-l-export-h%C3%A9rit%C3%A9).
</Note>

La configuration, les identifiants, la pagination et la nouvelle tentative en cas de limitation du débit sont identiques à ceux du [guide de connectivité Power BI / Excel](/fr/developers/v1/powerbi). Ajoutez d'abord la requête partagée `Fn_FetchAll` ; ce rapport l'appelle par son nom.

## Portées de clé requises

| Portée | Utilisation |
| - | - |
| `training:read` | `GET /v1/assignments` et `GET /v1/assignments/{id}/enrollments` |
| `course:read` | `GET /v1/courses` (titres du catalogue) |

## Points de terminaison sources

| Point de terminaison | Rôle |
| - | - |
| `GET /v1/assignments` | Liste des affectations : `assignment_id`, titre, `course_id`, statut du cycle de vie, `created_at`. La requête ne filtre pas par statut ; les affectations actives, suspendues et terminées apparaissent donc toutes (conformité historique). |
| `GET /v1/assignments/{id}/enrollments` | Progression par apprenant. Un parcours paginé par affectation. C'est la granularité des faits et la seule ressource `/v1` de ce rapport qui comporte l'adresse e-mail comme clé de jointure de reporting. |
| `GET /v1/courses` | Associe `course_id` au titre du cours (le nom du module de formation). `Assignment.title` est un libellé de campagne, et non le nom du module. |

Cette requête n'appelle **pas** `GET /v1/entities`. La ligne d'inscription contient déjà `email` et `display_name`, et la liste des entités ne comporte ni service ni intitulé de poste : la parcourir ne renseignerait donc pas de colonnes d'annuaire que la ligne d'inscription ne fournit pas déjà.

### Granularité

Une ligne par inscription (personne × affectation). Une personne affectée au même cours par deux affectations génère deux lignes. Une personne sans inscription n'apparaît pas : `/v1` ne peut pas produire de ligne d'annuaire exploitable sans adresse e-mail, et créer des lignes par personne seule mélangerait les granularités.

Budget de requêtes : un parcours paginé par affectation, de manière séquentielle, dans le respect de la limite de débit partagée par clé. Définissez toujours `limit = "500"`.

## Correspondance des colonnes

Les noms de colonnes hérités proviennent de l'export de votre fournisseur précédent. Les champs `/v1` correspondent aux noms de l'API publique ; la requête en renomme certains pour le rapport.

| Colonne héritée | Champ `/v1` ou dérivation | Colonne du rapport |
| - | - | - |
| Email | `Enrollment.email` | `email` |
| Full name | `Enrollment.display_name` | `full_name` |
| Department | Absent de `/v1` | Omis, non renseigné à null |
| Other directory (title, manager, location, …) | Absent de `/v1` — les entités ne comportent que l'adresse e-mail et le nom d'affichage. | Omis |
| Training module / course name | `Course.title`, à défaut `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` (l'export hérité ne la comportait peut-être pas ; elle est incluse car l'API la fournit) | `due_at` |
| Policy acceptance / acknowledgement | Aucun domaine de politiques | Omis |
| Policy name, accepted date | Aucun domaine de politiques | Omis |

Clés de jointure conservées pour un modèle en étoile : `entity_id`, `assignment_id`, `course_id`, `user_assignment_id`.

La requête conserve également `course_slug`, `assignment_title`, `passed`, `attempts`, `assignment_lifecycle_status` et `assignment_created_at`. `enrollment_status` correspond à la progression de l'apprenant, et non au cycle de vie de l'affectation (`active` / `paused` / `completed`).

## Différences par rapport à l'export hérité

* **Les acceptations de politiques ne sont pas disponibles.** Cette plateforme n'a pas de domaine de politiques : il n'existe ni `/policies`, ni `/policy_acceptances`, ni ressource `/v1` équivalente. Ne considérez pas ces colonnes comme une correspondance en attente. Elles sont hors périmètre.
* **Les informations d'annuaire supplémentaires sont omises, et non renseignées à null.** Le service, l'intitulé de poste, le responsable hiérarchique et le site ne figurent pas dans `/v1`. La requête ne crée pas de colonnes vides pour ces informations.
* **La date d'échéance est incluse** même si l'export hérité ne la comportait pas, car `Enrollment.due_at` est disponible dans l'API.
* **Le nom du cours privilégie le titre du catalogue.** `Course.title` correspond au nom du module. `Assignment.title` n'est utilisé que lorsque la ligne du catalogue est absente (supprimée ou non publiée).
* **Format long, sans pivot.** Une ligne par inscription, et non une ligne par personne avec une colonne par module.

## Étapes suivantes

<CardGroup cols={2}>
  <Card title="Configuration de Power BI et d'Excel" href="/fr/developers/v1/powerbi">
    Identifiants, pagination et chargement de ces requêtes dans Power BI ou Excel.
  </Card>

  <Card title="Journal des e-mails d'hameçonnage" href="/fr/developers/v1/reports/email-phishing-log">
    Interactions d'hameçonnage au niveau des événements sur les 12 derniers mois.
  </Card>

  <Card title="Utilisateurs les plus vulnérables" href="/fr/developers/v1/reports/most-susceptible-users">
    Synthèse par personne des clics, des identifiants saisis et des signalements sur 12 mois.
  </Card>

  <Card title="Clés d'API" href="/fr/developers/developer-hub/api-keys">
    Accordez `training:read` et `course:read` à la clé qui actualise ce rapport.
  </Card>
</CardGroup>


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