L'export du registre du temps de travail (voir Accès au registre et copie) a des colonnes stables : le nom de chaque colonne est une clé en anglais qui n'est pas traduite et ne change pas d'une langue à l'autre. Si vous voulez importer le fichier dans un autre système, vous pouvez vous y fier : quand une colonne est ajoutée, elle va à la fin de sa section, et aucune n'est renommée ni supprimée.
Forme du fichier
- Le CSV est un fichier unique contenant toutes les sections. Sa première
colonne est
section(entry,change,day_totaloumonth_total), puis viennent les colonnes des quatre sections les unes après les autres ; celles qui ne s'appliquent pas à une ligne restent vides. Il porte un BOM (il s'ouvre correctement dans Excel) et les cellules pouvant être interprétées comme une formule sont neutralisées. - L'Excel (XLSX) comporte une feuille
info(entreprise, identifiant fiscal, plage, fuseau horaire, vue et date de téléchargement) et une feuille par section :entries,changes,day_totalsetmonth_totals, chacune avec ses seules colonnes. - Les instants sont en ISO 8601 avec le décalage du fuseau horaire de
l'entreprise (
2026-10-15T09:00+02:00), les jours au formatAAAA-MM-JJet les mois au formatAAAA-MM. Les durées sont des minutes entières, les booléens valenttrueoufalseet les valeurs énumérées apparaissent sous leur code. - Ce qui ne s'applique pas ou n'a pas été enregistré reste vide : People n'invente aucune donnée.
- Dans la vue minimisée des représentants du personnel, l'identifiant fiscal, les IP et les mesures de conciliation (clé et texte) restent des colonnes, mais vides, pour que le fichier ait la même forme pour tous.
Plages : entries (entry)
Une ligne par plage (l'enregistrement de début et, s'il existe, celui qui la clôture). Les plages annulées figurent aussi, marquées.
| Colonne | Ce qu'elle contient |
|---|---|
employee_id | Identifiant de la personne |
employee_last_name | Nom de famille |
employee_first_name | Prénom |
employee_tax_id | Identifiant fiscal (vide dans la vue minimisée) |
date | Jour du début, dans le fuseau horaire de l'entreprise |
kind | Situation : WORK (journée), BREAK (pause), WAITING (attente), ON_CALL (astreinte) ou DISCONNECTION_INTERRUPTION |
start | Instant de début |
end | Instant de fin (vide s'il n'y a pas de sortie) |
duration_minutes | Durée de la plage en minutes |
start_clocking_id | Identifiant de l'enregistrement de début |
end_clocking_id | Identifiant de l'enregistrement de fin |
start_channel | Canal par lequel le début a été enregistré : WEB, MCP, CHAT, SYSTEM, TECHNICAL_INCIDENT ou LEGACY (antérieur à l'historique) |
end_channel | Canal de la fin, avec les mêmes valeurs |
modality | ON_SITE (sur site) ou REMOTE (à distance) |
hours_nature | ORDINARY, OVERTIME ou COMPLEMENTARY |
overtime_compensation | REST (repos) ou PAY (rémunérées), pour les heures supplémentaires |
force_majeure | true si les heures relèvent de la force majeure |
conciliation_measure_key | Clé de la mesure de conciliation (vide dans la vue minimisée) |
conciliation_measure_text | Détail de la mesure (vide dans la vue minimisée) |
automatic_end | true si la fin a été posée par la clôture automatique antérieure à ce registre |
incomplete | true s'il s'agit d'une entrée sans sortie d'une journée terminée |
voided_at | Instant où la plage a été annulée |
end_voided_at | Instant où seule la sortie a été annulée |
has_conciliation_measure | true si la plage porte une mesure (seule information que voient les représentants) |
Modifications : changes (change)
Une ligne par révision appliquée et par proposition de changement, avec qui propose, qui autorise, le désaccord et les marques « après clôture » et incident technique.
| Colonne | Ce qu'elle contient |
|---|---|
employee_id, employee_last_name, employee_first_name | La personne concernée |
record | revision (changement appliqué) ou proposal (proposition) |
id | Identifiant de la ligne |
proposal_id | Proposition dont provient une révision |
clocking_id | Enregistrement concerné |
action | CREATE (ajout), MOVE (changement d'heure), VOID (annulation) ou RECLASSIFY (reclassement) |
at | Instant du changement |
status | PENDING, ACCEPTED, REJECTED ou WITHDRAWN |
channel | Canal par lequel il a été fait |
technical_incident | true s'il s'agit d'un incident technique |
after_close | true s'il est postérieur à la clôture du mois |
reason | Motif du changement |
before, after | État de l'enregistrement avant et après (en JSON) |
author | Qui a fait le changement |
author_ip | IP depuis laquelle il a été fait (vide dans la vue minimisée) |
proposed_by | Qui a proposé |
proposed_for | Au nom de quelle partie : EMPLOYEE ou COMPANY |
proposer_ip | IP de qui a proposé |
decided_by | Qui a décidé |
decided_for | Au nom de quelle partie il a décidé |
decided_at | Instant de la décision |
decider_ip | IP de qui a décidé |
decision_reason | Motif de la décision, en cas de refus |
employee_discrepancy | Désaccord de la personne |
discrepancy_at | Quand elle l'a laissé |
applied_at | Quand il a été appliqué au registre |
representation_notified_at | Quand les représentants du personnel ont été prévenus |
Totaux journaliers : day_totals (day_total)
Une ligne par personne et par jour. Tous les temps sont en minutes.
| Colonne | Ce qu'elle contient |
|---|---|
employee_id, employee_last_name, employee_first_name | La personne |
date | Le jour |
worked_minutes | Travail effectif (inclut les interruptions de la déconnexion) |
ordinary_minutes | Dont ordinaires |
overtime_minutes | Dont supplémentaires |
complementary_minutes | Dont complémentaires |
unclassified_minutes | Dont non classées (seul ce qui est enregistré compte, pas la proposition) |
break_minutes | Pauses |
waiting_minutes | Attentes |
on_call_minutes | Temps d'astreinte |
disconnection_minutes | Interruptions de la déconnexion (déjà incluses dans le travail effectif) |
incomplete | true s'il y a des entrées sans sortie ce jour-là |
workday_regime | FULL_TIME ou PART_TIME, selon le contrat en vigueur |
part_time_percentage | Pourcentage du temps partiel |
schedule_mode | FIXED ou FLEXIBLE |
ordinary_limit_exceeded | true si le maximum quotidien d'heures ordinaires est dépassé |
short_rest_minutes | Minutes de repos depuis la journée précédente, si inférieur à 12 heures |
Totaux mensuels : month_totals (month_total)
Une ligne par personne et par mois. Elle reprend les neuf colonnes de minutes
des totaux journaliers (worked_minutes … disconnection_minutes), cette fois
additionnées par mois, et ajoute :
| Colonne | Ce qu'elle contient |
|---|---|
employee_id, employee_last_name, employee_first_name | La personne |
month | Le mois (AAAA-MM) |
days_worked | Jours travaillés |
incomplete_days | Jours incomplets |
flexible_target_minutes | Objectif du mois en horaire flexible |
flexible_worked_minutes | Travaillé dans le mois en horaire flexible |
flexible_excess_minutes | Excédent par rapport à l'objectif (jamais négatif) |
flexible_deficit_minutes | Déficit par rapport à l'objectif (jamais négatif) |
Le décompte flexible n'apparaît que pour les mois entiers compris dans la plage téléchargée. Le solde est scindé en excédent et déficit, deux colonnes qui ne sont jamais négatives.