> ## 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à per singola persona

> Ricreare l'esportazione della conformità della formazione per singola persona di un precedente provider a partire da assignments, enrollments e courses di /v1.

Questo report costituisce la parte relativa alla formazione dell'esportazione della conformità per singola persona di un precedente provider: identità della directory più una riga per persona e per iscrizione alla formazione (stato e date dei moduli).

La granularità è in formato lungo (persona × assegnazione), perché è ciò che `GET /v1/assignments/{id}/enrollments` restituisce già. La query non trasforma i moduli in colonne (pivot).

<Note>
  Le accettazioni delle policy non fanno parte di questo report. Living Security non dispone di alcuna API per l'accettazione delle policy, pertanto tali colonne legacy sono fuori ambito e non rappresentano una mappatura in sospeso. Consultare [Differenze rispetto all'esportazione legacy](#differenze-rispetto-all-esportazione-legacy).
</Note>

La configurazione, le credenziali, la paginazione e i nuovi tentativi in caso di limite di frequenza sono gli stessi descritti nella [guida alla connettività di Power BI / Excel](/it/developers/v1/powerbi). Aggiungere per prima la query condivisa `Fn_FetchAll`; questo report la richiama per nome.

## Ambiti della chiave richiesti

| Ambito | Utilizzato per |
| - | - |
| `training:read` | `GET /v1/assignments` e `GET /v1/assignments/{id}/enrollments` |
| `course:read` | `GET /v1/courses` (titoli del catalogo) |

## Endpoint di origine

| Endpoint | Ruolo |
| - | - |
| `GET /v1/assignments` | Elenco delle assegnazioni: `assignment_id`, titolo, `course_id`, stato del ciclo di vita, `created_at`. La query non filtra per stato, quindi compaiono tutte le assegnazioni attive, in pausa e completate (conformità storica). |
| `GET /v1/assignments/{id}/enrollments` | Avanzamento per singolo Discente. Una scansione paginata per ciascuna assegnazione. Questa è la granularità dei fatti e l'unica risorsa `/v1` di questo report che riporta l'e-mail come chiave di join per il reporting. |
| `GET /v1/courses` | Risolve `course_id` → titolo del corso (il nome del modulo di formazione). `Assignment.title` è un'etichetta di campagna, non il nome del modulo. |

Questa query **non** chiama `GET /v1/entities`. La riga di iscrizione contiene già `email` e `display_name`, e l'elenco delle entità non include reparto né qualifica: scorrerlo quindi non popolerebbe colonne della directory che la riga di iscrizione non contenga già.

### Granularità

Una riga per iscrizione (persona × assegnazione). Una persona a cui lo stesso corso viene assegnato tramite due assegnazioni genera due righe. Una persona senza iscrizioni non compare: `/v1` non può produrre una riga di directory utilizzabile senza e-mail, e inventare righe con la sola persona mescolerebbe granularità diverse.

Budget di richieste: una scansione paginata per ciascuna assegnazione, in sequenza, nel rispetto del limite di frequenza condiviso per chiave. Impostare sempre `limit = "500"`.

## Mappatura delle colonne

I nomi delle colonne legacy provengono dall'esportazione del precedente provider. I campi `/v1` sono i nomi dell'API pubblica; la query assegna alcuni alias ad alcuni di essi per il report.

| Colonna legacy | Campo `/v1` o derivazione | Colonna del report |
| - | - | - |
| Email | `Enrollment.email` | `email` |
| Full name | `Enrollment.display_name` | `full_name` |
| Department | Non presente su `/v1` | Omessa, non impostata a null |
| Other directory (title, manager, location, …) | Non presente su `/v1`: le entità contengono solo l'e-mail e il nome visualizzato. | Omessa |
| Training module / course name | `Course.title`, con ripiego su `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'esportazione legacy potrebbe non includerla; è inclusa perché l'API la fornisce) | `due_at` |
| Policy acceptance / acknowledgement | Nessun dominio policy | Omessa |
| Policy name, accepted date | Nessun dominio policy | Omessa |

Chiavi di join mantenute per un modello a stella: `entity_id`, `assignment_id`, `course_id`, `user_assignment_id`.

La query mantiene inoltre `course_slug`, `assignment_title`, `passed`, `attempts`, `assignment_lifecycle_status` e `assignment_created_at`. `enrollment_status` indica l'avanzamento del Discente, non il ciclo di vita dell'assegnazione (`active` / `paused` / `completed`).

## Differenze rispetto all'esportazione legacy

* **Le accettazioni delle policy non sono disponibili.** Questa piattaforma non dispone di un dominio policy: non esiste alcuna risorsa `/policies`, `/policy_acceptances` o `/v1` equivalente. Non considerare tali colonne come una mappatura in sospeso. Sono fuori ambito.
* **Gli elementi aggiuntivi della directory sono omessi, non impostati a null.** Reparto, qualifica, responsabile e sede non sono presenti su `/v1`. La query non inventa colonne vuote per tali elementi.
* **La data di scadenza è inclusa** anche se l'esportazione legacy non la prevedeva, perché `Enrollment.due_at` è disponibile nell'API.
* **Per il nome del corso si preferisce il titolo del catalogo.** `Course.title` è il nome del modulo. `Assignment.title` viene utilizzato solo quando la riga del catalogo manca (eliminata o non pubblicata).
* **Formato lungo, senza pivot.** Una riga per iscrizione, non una riga per persona con una colonna per ciascun modulo.

## Passaggi successivi

<CardGroup cols={2}>
  <Card title="Configurazione di Power BI ed Excel" href="/it/developers/v1/powerbi">
    Credenziali, paginazione e caricamento di queste query in Power BI o Excel.
  </Card>

  <Card title="Registro del phishing via e-mail" href="/it/developers/v1/reports/email-phishing-log">
    Interazioni di phishing a livello di evento per gli ultimi 12 mesi.
  </Card>

  <Card title="Utenti più vulnerabili" href="/it/developers/v1/reports/most-susceptible-users">
    Riepilogo per singola persona su 12 mesi di clic, credenziali e segnalazioni.
  </Card>

  <Card title="Chiavi API" href="/it/developers/developer-hub/api-keys">
    Concedere `training:read` e `course:read` sulla chiave che aggiorna questo report.
  </Card>
</CardGroup>


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