# Export Excel

## API REST - Validation de l'export

Avant le téléchargement des fichiers d'activités, nous vous recommandons de valider les paramètres de l'export afin prévisualiser combien de fichier seront générés et comment les données seront réparties entre les fichiers. Pour la génération de ces fichiers, certaines règles s'appliquent en fonctions de la période et du nombre de salariés sélectionnés.

```
POST /companies/validate_export_params
Content-Type: application/json

{
  "company_ids": [1],
  "user_ids": [100],
  "min_date": "2021-12-16",
  "max_date": "2022-02-14",
  "one_file_by_employee": false,
  "detailed": false,
}
```

### **Règles de génération de fichiers (stratégies)**

<table><thead><tr><th width="241">Stratégie</th><th>Règle</th></tr></thead><tbody><tr><td>OVER_365_DAYS</td><td><p><em>Période de date ≥ 1 an</em> <br><strong>Génération</strong> : 1 fichier par année ET par salarié </p><p><strong>fichiers</strong> : &#x3C;nom_prenom>_YYYY ou &#x3C;nom_prenom>_YYYY_YYYY <br><strong>Tri</strong> : Alphabétique par nom de famille, puis chronologique Paramètre one_file_by_employee : ❌ Ignoré (toujours 1 fichier par salarié)</p></td></tr><tr><td>OVER_31_DAYS</td><td><p><em>Période > 31 jours (mais &#x3C; 365 jours)</em> <br><strong>Génération</strong> : Si ≤ 100 salariés : 1 fichier par mois Si > 100 salariés 1 fichier par mois ET par tranche de 100 salariés <strong>fichiers</strong> : YYYY-MM__YYYY (ex : 2024-03_mars_2024) </p><p><strong>Tri</strong> : Chronologique (grâce au préfixe YYYY-MM) Paramètre one_file_by_employee : ❌ Ignoré</p></td></tr><tr><td>OVER_100_USERS</td><td><p> <em>> 100 salariés (et période ≤ 31 jours)</em><br><strong>Génération</strong> : 1 fichier par tranche de 100 salariés </p><p><strong>Fichiers</strong> : batch_1, batch_2, etc. <br><strong>Tri</strong> : Alphabétique par nom de famille Paramètre one_file_by_employee : ❌ Ignoré</p></td></tr><tr><td>SINGLE_OR_CONSOLIDATED</td><td>≤ 100 salariés ET période ≤ 31 jours <br><strong>Génération</strong> : <br>one_file_by_employee = true -> 1 fichier par salarié Si one_file_by_employee = false (défaut) -> 1 fichier consolidé, <br><strong>le paramètre one_file_by_employee est Pris en compte</strong></td></tr></tbody></table>

### Authentification

Afin de pouvoir utiliser cette API, vous devez être authentifié : [authentification](https://developers.mobilic.beta.gouv.fr/guides/authentification "mention").

### Requête

<table data-full-width="true"><thead><tr><th width="175">Champ</th><th width="284.48837209302326">Description</th><th width="178">Format</th><th>Obligatoire</th></tr></thead><tbody><tr><td><code>company_ids</code></td><td>Entreprises pour lesquelles on souhaite exporter les données</td><td>Liste d'identifiants d'entreprises</td><td>Oui</td></tr><tr><td><code>user_ids</code></td><td>Salariés pour lesquels on souhaite filtrer les données. Par défaut, on remonte les données pour tous les salariés</td><td>Liste d'identifiants de salariés</td><td>Non (par défaut: <code>[]</code>) </td></tr><tr><td><code>min_date</code></td><td>Date de début de la période souhaitée</td><td>Date au format "YYYY-MM-dd"</td><td>Non</td></tr><tr><td><code>max_date</code></td><td>Date de fin de la période souhaitée</td><td>Date au format "YYYY-MM-dd"</td><td>Non</td></tr><tr><td><pre><code>one_file_by_employee
</code></pre></td><td>Permet de spécifier si le fichier doit être unique pour chaque salarié ou en un seul fichier pour tous les salariés</td><td>Booléen</td><td>Non (par défaut: <code>false</code>)</td></tr><tr><td><code>detailed</code></td><td>Retourne le détail de chaque fichiers (chunks)</td><td>Booléen</td><td>Non  (défaut : <code>false</code>)</td></tr></tbody></table>

### Réponse

```
{
  "strategy": "string",
  "message": "string",
  "can_choose_consolidated": boolean,
  "num_chunks": integer,
  "chunks": [ ... ]  // Optionnel si detailed=true
}
```

#### Champs de la réponse

| Champ                     | Type      | Requis | Description                                                                                                                                                                 |
| ------------------------- | --------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `strategy`                | `string`  | Oui    | Identifiant de la stratégie de chunking appliquée. Valeurs possibles : `over_365_days`, `over_31_days`, `over_100_users`, `single_or_consolidated`                          |
| `message`                 | `string`  | Oui    | Message explicatif en français décrivant la stratégie appliquée et le nombre de fichiers attendus. À afficher directement à l'utilisateur.                                  |
| `can_choose_consolidated` | `boolean` | Oui    | Indique si le paramètre `one_file_by_employee` peut influencer le résultat. `true` uniquement pour la stratégie `single_or_consolidated`, `false` dans tous les autres cas. |
| `num_chunks`              | `integer` | Oui    | Nombre total de fichiers Excel qui seront générés lors de l'export.                                                                                                         |
| `chunks`                  | `array`   | Non    | Tableau contenant le détail de chaque chunk (fichier). Présent uniquement si le paramètre `detailed=true` est envoyé dans la requête.                                       |

#### Structure des objets dans `chunks` (si `detailed=true`)

| Champ         | Type                | Description                                                                                            |
| ------------- | ------------------- | ------------------------------------------------------------------------------------------------------ |
| `user_ids`    | `array[integer]`    | Liste des identifiants des salariés inclus dans ce fichier.                                            |
| `min_date`    | `string` (ISO 8601) | Date de début de la période couverte par ce fichier (format `YYYY-MM-DD`).                             |
| `max_date`    | `string` (ISO 8601) | Date de fin de la période couverte par ce fichier (format `YYYY-MM-DD`).                               |
| `file_suffix` | `string`            | Suffixe du nom de fichier qui sera généré (ex: `2026-01_janvier_2026`, `Martin_Jean_2024`, `batch_1`). |

## API REST - Téléchargement de l'export

Pour exporter les données d'activité des salariés d'une entreprise au format ZIP contenant plusieurs fichiers excel, utiliser l'API REST suivante :&#x20;

```
POST /companies/download_activity_report
Content-Type: application/json

{
  "company_ids": [1],
  "user_ids": [100],
  "min_date": "2021-12-16",
  "max_date": "2022-02-14",
  "one_file_by_employee": false
}
```

### Authentification

Afin de pouvoir utiliser cette API, vous devez être authentifié : [authentification](https://developers.mobilic.beta.gouv.fr/guides/authentification "mention").

### Requête

<table data-full-width="true"><thead><tr><th width="175">Champ</th><th width="284.48837209302326">Description</th><th width="178">Format</th><th>Obligatoire</th></tr></thead><tbody><tr><td><code>company_ids</code></td><td>Entreprises pour lesquelles on souhaite exporter les données</td><td>Liste d'identifiants d'entreprises</td><td>Oui</td></tr><tr><td><code>user_ids</code></td><td>Salariés pour lesquels on souhaite filtrer les données. Par défaut, on remonte les données pour tous les salariés</td><td>Liste d'identifiants de salariés</td><td>Non (par défaut: <code>[]</code>) </td></tr><tr><td><code>min_date</code></td><td>Date de début de la période souhaitée</td><td>Date au format "YYYY-MM-dd"</td><td>Non</td></tr><tr><td><code>max_date</code></td><td>Date de fin de la période souhaitée</td><td>Date au format "YYYY-MM-dd"</td><td>Non</td></tr><tr><td><pre><code>one_file_by_employee
</code></pre></td><td>Permet de spécifier si le fichier doit être unique pour chaque salarié ou en un seul fichier pour tous les salariés</td><td>Booléen</td><td>Non (par défaut: <code>false</code>)</td></tr></tbody></table>

### Réponse

En cas de succès, l'API retourne un fichier ZIP :&#x20;

```
HTTP/1.1 200 OK
Content-Disposition: attachment; filename=fichiers_Excel.zip
Content-Type: application/zip
Content-Length: ...
```

### Cas d'erreurs

<table><thead><tr><th width="440">Description</th><th>HTTP Status</th></tr></thead><tbody><tr><td>Pas de token d'authentification</td><td>401 Unauthorized</td></tr><tr><td>Le token d'authentification ne correspond pas à une des entreprises renseignées</td><td>403 Forbidden</td></tr><tr><td>La requête est mal formée (le détail est dans le corps de la réponse)</td><td>404 Bad request</td></tr></tbody></table>
