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

# Journal d'hameçonnage par e-mail

> Recréez le journal d'hameçonnage au niveau des événements d'un fournisseur précédent à partir des événements et des entités de simulation de reporting /v1.

Ce rapport est un journal d'hameçonnage au niveau des événements : une ligne par interaction de simulation observée (date, action, adresse e-mail du destinataire, objet, expéditeur, difficulté). Il reste au format long : il ne regroupe pas l'historique d'une personne en un seul résultat.

La requête intègre les **12 derniers mois calendaires** dans `occurred_after` (minuit UTC le même jour du mois, douze mois auparavant — et non une durée de 365 jours).

<Note>
  L'adresse IP brute du client n'est jamais présente dans `/v1` — il s'agit d'une protection de la vie privée dès la conception, et non d'un mappage en attente. Le type d'appareil est une classe dérivée figurant sur la ligne d'événement ; la valeur brute de `user_agent` reste privée. Consultez
  [Différences par rapport à l'export historique](#diff%C3%A9rences-par-rapport-%C3%A0-l-export-historique).
</Note>

La configuration, les identifiants, la pagination et la gestion des nouvelles tentatives en cas de limitation de 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 |
| - | - |
| `reporting:read` | `GET /v1/reporting/simulation_events` |
| `entity:read` | `GET /v1/entities` (jointure de l'adresse e-mail et du nom d'affichage) |

Une clé disposant uniquement de `simulation:read` ne peut pas appeler le point de terminaison des événements de reporting (l'API renvoie `403`). Consultez
[choisir la bonne granularité](/fr/developers/v1/powerbi#choisir-la-bonne-granularit%C3%A9).

## Points de terminaison sources

| Point de terminaison | Rôle |
| - | - |
| `GET /v1/reporting/simulation_events` | Fait au niveau de l'événement. La granularité est une interaction saisie. `email_subject`, `sender_email`, `sender_domain` et `difficulty_tier` figurent sur cette ligne ; la requête ne joint donc pas les résultats au niveau de la campagne pour ces champs. |
| `GET /v1/entities` | Résout `entity_id` → adresse e-mail / nom d'affichage. L'événement de reporting omet l'adresse e-mail du destinataire (exclusion stricte sur le lecteur de reporting). Le parcours de `/entities` permet de renseigner la colonne « email » historique. |

Filtres autorisés sur la liste des événements (tout autre filtre renvoie `400`) :
`limit`, `page_token`, `simulation`, `entity`, `event_type`,
`occurred_after`.

Cette famille de reporting est un [jeu de données en préversion](/fr/developers/v1/powerbi#jeux-de-donn%C3%A9es-en-pr%C3%A9version-reporting-phishing-par-personne).
Consultez le schéma du jeu de données et les politiques de données à l'adresse
`GET /v1/reporting/datasets` et
`GET /v1/reporting/datasets/simulation_events`.

### Granularité

Une ligne par événement de simulation de reporting. Une personne qui a ouvert puis cliqué sur le même message génère deux lignes. Les événements dont `entity_id` est nul
(aucun acteur / destinataire / participant cible) apparaissent tout de même — `email` est
nul.

La fenêtre de l'API est élargie d'une minute ; la borne exacte
`occurred_at >= WindowStart` est réappliquée localement afin que l'année glissante
ne dépende pas du fait que le serveur traite `occurred_after` comme
inclusif ou exclusif.

Budget de requêtes : un parcours paginé des événements de la fenêtre, plus un parcours
des entités. Définissez toujours `limit = "500"`.

## Mappage des colonnes

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

| Colonne historique | Champ `/v1` ou dérivation | Colonne du rapport |
| - | - | - |
| Date | `Event.occurred_at` (sous forme de date ; la valeur brute `occurred_at` est conservée sous `datetimezone`) | `date` |
| Action | `Event.event_type` — jetons fermés listés ci-dessous | `action` |
| Email | `Entity.email` (jointure sur `entity_id`) | `email` |
| Subject | `Event.email_subject` | `subject` |
| From | `Event.sender_email` | `from` |
| Difficulty | `Event.difficulty_tier` — entier de 1 à 5, 1 étant le plus facile, 5 le plus difficile | `difficulty` |
| Raw IP | Jamais présente dans `/v1` | Omise, non mise à null |
| Device type | `Event.device_type` — classe dérivée ; null lorsque l'événement n'a pas de classe dérivée | `device_type` |

### Jetons d'action

`action` est le jeton de reporting fermé. L'ancien « Email Sent » correspond à
`simulation.delivered` (`delivered` est le verbe public ; le jeton transmis est
`simulation.delivered`).

| Valeur de `action` |
| - |
| `simulation.delivered` |
| `simulation.opened` |
| `simulation.link_clicked` |
| `simulation.credentials_submitted` |
| `simulation.attachment_opened` |
| `simulation.reported` |
| `simulation.bounced` |
| `simulation.qr_scanned` |
| `simulation.replied` |

Champs supplémentaires conservés car l'API les fournit : `sender_domain`, `full_name`,
`event_id`, `entity_id`, `simulation_id`, `occurred_at`, ainsi que
`entity_type` et `entity_status` issus de la jointure d'entités.

## Différences par rapport à l'export historique

* **L'adresse IP brute n'est jamais disponible.** `/v1` n'expose pas l'adresse IP brute du client —
  protection de la vie privée dès la conception, et non mappage en attente. La requête n'ajoute aucune colonne IP de substitution.
* **Le type d'appareil est dérivé, non brut.** `device_type` est une classe d'appareil dérivée pour les événements de clic, de soumission et de signalement. Les jetons observés comprennent
  `desktop`, `mobile`, `tablet` et `unknown`, mais l'émetteur stocke une chaîne libre — traitez-la comme du texte ouvert, et non comme une énumération fermée. Elle est nulle lorsque l'événement n'a pas de classe dérivée, et la chaîne brute `user_agent`
  reste privée.
* **« Email Sent » correspond à `simulation.delivered`.** Utilisez ce jeton pour filtrer ou compter les envois. Ne recherchez pas de chaîne historique `email_sent`.
* **L'adresse e-mail du destinataire est obtenue par jointure et n'est pas un champ de l'événement.** L'événement de reporting omet l'adresse e-mail ; la requête parcourt `/entities` pour la renseigner.
* **12 derniers mois calendaires**, et non une durée de 365 jours, ni l'historique complet.
* **Format long, non regroupé.** Une ligne par interaction, et non un résultat par personne.

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

  <Card title="Conformité par personne" href="/fr/developers/v1/reports/per-person-compliance">
    Inscriptions aux formations à la granularité personne × affectation.
  </Card>

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


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