Guide de l'API d'ingestion des collaborateurs
Ce document explique les champs de l'ingestion des collaborateurs du point de vue d'une équipe d'intégration côté client ou tierce. Il décrit la signification de chaque champ, son influence sur codeto plan et codeto report et les valeurs qui demandent une attention particulière lors de la préparation des données.
L'ingestion crée ou met à jour des collaborateurs et leurs contrats. Les champs liés au contrat peuvent dépendre du temps : lorsqu'une valeur change au fil du temps, transmets-la avec la période de validité correcte afin que codeto plan et codeto report puissent l'appliquer aux bonnes semaines, rapports, soldes et vues de planification.
Aperçu du DTO
L'ingestion des collaborateurs accepte un ou plusieurs collaborateurs. Chaque
collaborateur dispose de champs au niveau supérieur ainsi que d'un ou plusieurs
contrats associés. Les champs marqués VersionableProperty<T> sont des
listes de valeurs avec périodes de validité, comme décrit dans la section
suivante.
type VersionedValue<T> = {
value: T;
validFrom: string;
};
type VersionableProperty<T> = VersionedValue<T>[];
type EmployeeIngestPayload = CreateEmployeeDto[];
type CreateEmployeeDto = {
employeeId: string;
contracts: CreateContractDto[];
firstName: VersionableProperty<string>;
lastName: VersionableProperty<string>;
username: VersionableProperty<string>;
language: VersionableProperty<string>;
};
type CreateContractDto = {
contractId: string;
subsidiaryId: string;
costCenterIds: VersionableProperty<string[]>;
employmentLevel: VersionableProperty<number>;
apprenticeshipYear: VersionableProperty<string>;
salaryType: VersionableProperty<string>;
roleId: VersionableProperty<string>;
employeeCategory: VersionableProperty<string>;
workingPattern: WorkingPattern;
workingPeriods: WorkingPeriod[];
salaryComponents: SalaryComponents;
};
type WorkingPattern = {
monday: VersionableProperty<number>;
tuesday: VersionableProperty<number>;
wednesday: VersionableProperty<number>;
thursday: VersionableProperty<number>;
friday: VersionableProperty<number>;
saturday: VersionableProperty<number>;
sunday: VersionableProperty<number>;
};
type WorkingPeriod = {
startDate: string;
endDate: string;
};
type SalaryComponents = {
controllingCode: VersionableProperty<string>;
billingRate: VersionableProperty<number>;
overtimePayCode: VersionableProperty<number>;
billingRateMileage: VersionableProperty<number>;
vehicleBillingType: VersionableProperty<number>;
dailyAllowance: VersionableProperty<number>;
vacationBalanceLastPayRun: number;
overtimeBalanceLastPayRun: number;
gavBalanceLastPayRun: number;
vacationMonthlyAllowance: number;
};
Attributs versionnables
Certains champs sont versionnables, ce qui signifie que leur valeur peut évoluer dans le temps et que codeto plan ou codeto report peuvent avoir besoin de connaître la valeur valide à une date donnée. Un champ versionnable doit donc être transmis avec la bonne période d'effet dès lors que le système source prend en charge des changements historiques ou datés dans le futur.
Chaque version est identifiée par sa date validFrom. Cette date définit le
premier jour à partir duquel la valeur s'applique. Le système calcule
automatiquement les limites de validité à partir de la suite des dates
validFrom : une version est valable de son validFrom jusqu'à la veille du
validFrom de la version suivante, ou indéfiniment s'il n'existe pas de
version ultérieure.
Par exemple, si un collaborateur change de centre de coûts le 2026-04-01,
transmets l'ancien centre de coûts comme version avec son validFrom
d'origine, et le nouveau centre de coûts comme deuxième version avec
validFrom: "2026-04-01". Le système considérera l'ancienne valeur comme
valable jusqu'au 2026-03-31 inclus et la nouvelle à partir du 2026-04-01.
Cela permet aux anciens rapports, soldes, entrées de planification et
documents d'archive de continuer à utiliser la valeur correcte à l'époque.
Les périodes de validité des champs versionnables sont déduites des dates validFrom comme décrit ci-dessus (la période effective de la version précédente se termine la veille du validFrom suivant). Ce n'est pas la même convention que pour workingPeriods, où endDate est inclusif, voir la section sur workingPeriods pour ce cas.
Champs collaborateur
employeeId
Identifiant unique du collaborateur dans le système source.
Utilise une valeur stable qui ne change pas au cours du cycle de vie du collaborateur. codeto plan et codeto report utilisent cet identifiant pour reconnaître le même collaborateur lors d'ingestions ultérieures.
La valeur doit être globalement unique dans l'ensemble de l'environnement client.
Exemples :
- Utilise le numéro de personnel issu des données de base RH s'il reste stable après des changements de nom, de département ou de contrat.
- Les adresses e-mail conviennent généralement moins bien, car elles peuvent changer suite à un mariage, un changement de marque ou une migration de comptes.
firstName
Prénom légal du collaborateur ou tel qu'il figure dans le système source.
Ce prénom est utilisé pour l'affichage, la recherche et l'identification du collaborateur. Dans codeto plan, les utilisateurs peuvent gérer un prénom d'affichage distinct qui peut être affiché à la place dans certaines vues. Dans codeto report, le prénom ingéré reste la valeur source pertinente pour l'affichage et le reporting.
firstName est versionnable : transmets chaque prénom historique comme
version distincte avec la date à laquelle il est devenu effectif si le
système source suit les changements de nom dans le temps. Une seule version
avec le prénom actuel suffit en l'absence d'historique.
Exemples :
- Si le système source change le
firstNamedeJonenJonathanau2026-03-01, transmets l'ancienne valeur avec sonvalidFromd'origine et une deuxième version avecvalue: "Jonathan"etvalidFrom: "2026-03-01". - Si les utilisateurs de codeto plan gèrent un prénom d'affichage tel que
John, ce prénom d'affichage peut apparaître dans les vues de planification, alors que codeto report continue d'utiliser le prénom ingéré.
lastName
Nom de famille légal du collaborateur ou tel qu'il figure dans le système source.
Ce nom est utilisé conjointement avec le prénom pour l'affichage, la
recherche, les vues de rapport et les documents archivés. Comme pour
firstName, codeto plan peut gérer un nom d'affichage distinct, tandis que
codeto report s'appuie principalement sur la valeur ingérée.
lastName est versionnable de la même manière que firstName : transmets
chaque nom historique comme version distincte avec le validFrom approprié
si le système source suit les changements de nom (p. ex. après un mariage).
Exemples :
- Si le nom d'un collaborateur change, mets à jour ce champ afin que les futures vues de rapport et les documents d'archive utilisent le nouveau nom.
- Conserve les identifiants historiques du collaborateur stables lors d'un changement de nom ; ne crée pas un nouveau collaborateur uniquement parce que le nom de famille a changé.
username
Identifiant de connexion ou nom de compte du collaborateur, le cas échéant.
Ce champ est stocké à des fins d'identification et d'éventuelle utilisation en aval. Il n'a actuellement aucune incidence sur la planification, le reporting, les soldes ou les validations.
username est versionnable : transmets chaque identifiant historique comme
version distincte avec la date à laquelle il est devenu effectif si le
système source suit les changements d'identifiants. Sinon, une seule version
avec la valeur actuelle suffit.
language
Langue préférée du collaborateur.
Ce champ influence les communications adressées au collaborateur, telles que les notifications. Dans codeto report, il influence également la langue des documents d'archive du collaborateur. Indique une valeur correspondant à la langue dans laquelle le collaborateur doit recevoir les communications officielles ou opérationnelles.
Les valeurs acceptées sont de (allemand), fr (français), it (italien)
et en (anglais), conformément à la convention ISO 639 en minuscules.
Exemples :
- Utilise
depour un collaborateur qui doit recevoir des notifications en allemand et des documents d'archive codeto report en allemand. - Utilise
frpour un collaborateur travaillant dans une filiale francophone si sa communication officielle doit se faire en français.
contracts
Liste des contrats appartenant au collaborateur.
Un collaborateur a besoin d'au moins un contrat valide pour apparaître dans codeto plan et codeto report. Les contrats définissent l'appartenance organisationnelle du collaborateur, sa période d'activité, le mode de calcul du temps de travail, les règles de reporting applicables et les soldes affichés.
Exemples :
- Un collaborateur ayant un contrat en cours possède en général une seule entrée contractuelle avec une période de travail active.
- Un collaborateur qui a changé de filiale peut avoir deux contrats, chacun avec sa propre filiale et sa propre période de travail.
- Un collaborateur parti puis revenu peut avoir des périodes de travail ou des contrats séparés, selon la façon dont le système RH du client modélise le réembauchage.
Champs contrat
contractId
Identifiant unique du contrat.
Utilise une valeur stable qui reste identique entre les ingestions du même contrat. codeto plan et codeto report utilisent l'identifiant du contrat pour rattacher les entrées de planification, les bookings, les rapports, les soldes, les validations et les documents d'archive au bon contrat. Le modifier déconnecte de nouvelles données de l'historique de planification ou de reporting préalable.
La valeur doit être globalement unique dans l'ensemble de l'environnement client, et pas seulement par collaborateur.
Exemples :
- Utilise le numéro de contrat RH s'il est unique et reste stable malgré les changements de paie ou d'organisation.
- Ne réutilise pas le même
contractIdpour un contrat renouvelé si l'ancien et le nouveau contrats doivent conserver des historiques de reporting ou de soldes distincts.
subsidiaryId
Identifiant de la filiale ou de l'unité d'entreprise à laquelle le contrat appartient.
Il s'agit de l'un des champs de cadrage les plus importants. Il détermine la configuration d'entreprise applicable au contrat, y compris les règles de temps de travail, les calendriers de jours fériés, les paramètres de rapport, le comportement d'arrondi et les limites d'autorisation.
Dans codeto plan, la filiale influence qui peut voir ou modifier le collaborateur et quel contexte organisationnel de temps de travail s'applique. Dans codeto report, elle influence le moment où le collaborateur apparaît dans le reporting, les règles appliquées aux rapports et les informations d'entreprise figurant sur les documents d'archive.
Exemples :
- Si un collaborateur passe de la filiale
CH01àCH02, cela nécessite un nouveau contrat référençantCH02.subsidiaryIdn'est pas versionnable, donc un changement de filiale ne peut pas être exprimé comme une nouvelle version sur le contrat existant. - Lorsque des permissions basées sur la filiale sont utilisées, la filiale attribuée fait partie du contexte de contrôle d'accès.
costCenterIds
Centres de coûts assignés au contrat.
Utilise ce champ pour attribuer le collaborateur ou le contrat à un ou plusieurs centres de coûts. Ces valeurs servent au filtrage, aux vues spécifiques par centre de coûts, aux récapitulatifs de rapports, aux exports et aux documents d'archive.
Exemples :
- Attribue un seul centre de coûts lorsque le travail du collaborateur relève d'une seule unité comptable.
- Attribue plusieurs centres de coûts si la configuration de reporting du client attend que le contrat soit visible sous plus d'un filtre de centre de coûts.
- Mets à jour la valeur lorsque le collaborateur change d'unité comptable afin que les futurs rapports et exports utilisent la bonne attribution.
employmentLevel
Pourcentage d'occupation du contrat, généralement de 0 à 100.
Cette valeur est affichée comme métadonnée du contrat et peut servir au
filtrage ou au regroupement des collaborateurs. Elle représente le taux
d'occupation convenu. Pour les calculs de temps de travail et de reporting,
indique les heures effectivement attendues par jour de la semaine dans
workingPattern. Le modèle horaire fourni n'est pas normalisé en
fonction du taux d'occupation.
Exemples :
- Un collaborateur à plein temps est généralement transmis avec
100. - Un collaborateur à 60 % est généralement transmis avec
60, tandis queworkingPatterndoit toujours contenir les heures réellement attendues pour chaque jour de la semaine.
apprenticeshipYear
Année d'apprentissage du collaborateur, le cas échéant.
Ce champ est stocké comme métadonnée du contrat. Il ne modifie actuellement ni le comportement de codeto plan ni celui de codeto report, mais peut être utile pour l'affichage, les exports ou de futurs besoins d'intégration.
salaryType
Catégorie salariale du contrat.
Les valeurs acceptées sont S pour les collaborateurs payés à l'heure et
M pour les collaborateurs au salaire mensuel.
Ce champ distingue les collaborateurs payés à l'heure de ceux au salaire mensuel. Cela importe surtout dans codeto report :
- les collaborateurs payés à l'heure peuvent être traités différemment pour les jours fériés, les soldes et la validation des absences ;
- les collaborateurs au salaire mensuel doivent généralement suivre les heures cibles configurées et les règles de reporting.
Le comportement de planification de codeto plan n'est actuellement pas modifié par ce champ.
Exemples :
- Utilise
Spour les collaborateurs dont les jours fériés et les soldes doivent suivre les règles applicables aux collaborateurs payés à l'heure. - Utilise
Mpour les collaborateurs dont les rapports doivent être contrôlés par rapport aux heures cibles régulières.
roleId
Rôle assigné au contrat.
Dans codeto plan, le rôle aide à classer les collaborateurs dans les vues de planification et peut influencer les collaborateurs apparaissant dans les sélections basées sur le rôle. Dans codeto report, le rôle est affiché comme information contractuelle dans les vues et documents liés aux rapports.
Ce champ ne définit pas à lui seul le routage de validation des rapports. Le comportement de validation dépend des responsabilités de reporting et de projet configurées par le client.
Exemples :
- Attribue un rôle tel que chef de projet ou chef de chantier si codeto plan doit inclure le collaborateur dans des sélections de planification basées sur le rôle.
- Mets à jour le rôle à partir de la date d'effet lorsqu'un collaborateur change de fonction, afin que les affichages de planification et de rapport reflètent le rôle actuel correct.
employeeCategory
Catégorie de collaborateur spécifique au client.
Ce champ est stocké comme métadonnée du contrat. Il ne modifie actuellement ni le comportement de codeto plan ni celui de codeto report directement, mais peut être utile pour les exports, la classification ou de futurs filtres.
workingPattern.monday à workingPattern.sunday
Heures de travail attendues pour chaque jour de la semaine.
Il s'agit du groupe de champs central pour le calcul des heures cibles.
Indique le temps de travail réellement attendu pour chaque jour de la
semaine pour ce contrat, c'est-à-dire le planning convenu tel qu'il doit
apparaître jour après jour. Ne mets pas ces valeurs à l'échelle avec
employmentLevel ; elles sont utilisées telles quelles, sans
normalisation. Par exemple, si un collaborateur à temps partiel travaille
quatre heures le lundi, la valeur du lundi doit être de quatre heures, et
non la valeur par défaut à plein temps de l'entreprise.
Dans codeto plan, le modèle horaire influence l'utilisation et les calculs liés aux politiques. Il ne modifie pas nécessairement visuellement chaque vue calendrier de planification, car certaines présentations de calendrier reposent sur les paramètres de temps de travail au niveau de la filiale.
Dans codeto report, le modèle horaire détermine les heures attendues, les récapitulatifs de rapport, les avertissements de validation, les contrôles liés aux heures supplémentaires ou à la GAV, les totaux des documents d'archive et le caractère ouvré ou non d'un jour.
Exemples :
- Un modèle hebdomadaire à plein temps pourrait être : du lundi au vendredi
8, samedi0, dimanche0. - Un collaborateur à 60 % travaillant le lundi, le mardi et le jeudi peut
être transmis comme
8,8,0,8,0,0,0. - Un collaborateur qui ne travaille jamais le mercredi peut avoir le
mercredi à
0.
workingPeriods
Plages de dates pendant lesquelles le contrat est actif.
Chaque période de travail comporte une startDate et une endDate
inclusive. Les périodes définissent quand le collaborateur peut être
planifié, quand des rapports sont attendus et quel contrat s'applique pour
une date donnée.
Dans codeto plan, les périodes de travail définissent les plages de dates pendant lesquelles le collaborateur est disponible sur la timeline de planification et peut recevoir des bookings.
Dans codeto report, les périodes de travail déterminent si des rapports sont créés ou affichés pour une semaine donnée, quel contrat reçoit le rapport, quelle configuration de filiale s'applique et quelles informations d'entreprise apparaissent dans les documents d'archive.
Utilise des périodes séparées lorsque le collaborateur doit être inactif entre deux phases contractuelles actives.
Exemples :
- Un contrat en cours peut comporter une
startDatesans fin pertinente au-delà de la période d'emploi active, selon le format d'ingestion convenu avec le client. - Un contrat actif du
2026-01-01au2026-06-30ne doit rendre le collaborateur planifiable et rapportable qu'à l'intérieur de cette plage. - Si l'emploi est suspendu pour un congé non payé, n'utilise des périodes séparées que si le collaborateur ne doit pas être planifié ni tenu de rapporter pendant l'interruption.
Champs des composantes salariales
salaryComponents.controllingCode
Code de contrôle de gestion ou de comptabilité du contrat.
Ce champ est stocké à des fins d'utilisation financière, comptable, d'export ou d'intégration en aval. Il ne modifie actuellement ni le comportement de codeto plan ni celui de codeto report. Il peut influencer les payloads sortants comportant des informations financières ou de contrôle de gestion.
Exemples :
- Utilise le code de contrôle de gestion attendu par l'export de paie, ERP ou financier du client.
- Mets à jour la valeur lorsque l'attribution financière change et que les futurs exports doivent utiliser le nouveau code.
salaryComponents.billingRate
Taux de facturation associé au contrat.
Ce champ est stocké à des fins de facturation, comptables, d'export ou d'intégration en aval. Il ne modifie actuellement ni le comportement de codeto plan ni celui de codeto report. Il peut influencer les payloads sortants comportant des informations de facturation ou de tarif.
Exemples :
- Indique le taux horaire ou contractuel que les exports de facturation en aval doivent recevoir.
- Mets à jour la valeur à partir de la date d'effet d'un changement de tarif.
salaryComponents.overtimePayCode
Code indiquant si la gestion des heures supplémentaires est activée pour le
contrat. Les valeurs numériques inférieures à 5 activent la gestion
des heures supplémentaires ; les valeurs de 5 ou plus la désactivent.
codeto report utilise cette information pour déterminer si les suppléments automatiques liés aux heures supplémentaires, les avertissements ou le comportement des soldes doivent s'appliquer. Une valeur qui désactive les heures supplémentaires peut faire passer le collaborateur dans un mode de reporting différent où les écarts par rapport aux heures cibles sont traités autrement.
Le comportement de planification de codeto plan n'est actuellement pas modifié par ce champ.
Exemples :
- Utilise une valeur inférieure à
5pour les collaborateurs dont les heures supplémentaires éligibles doivent contribuer à la gestion des heures supplémentaires dans codeto report. - Utilise une valeur de
5ou plus pour les collaborateurs dont les écarts d'heures cibles doivent être traités selon les règles de participation aux bénéfices ou hors heures supplémentaires du client.
salaryComponents.billingRateMileage
Taux de facturation kilométrique associé au contrat.
Ce champ est stocké à des fins de facturation, comptables, d'export ou d'intégration en aval. Il ne modifie actuellement ni le comportement de codeto plan ni celui de codeto report. Il peut influencer les payloads sortants comportant des informations de facturation kilométrique ou de remboursement.
Exemples :
- Indique le tarif kilométrique attendu par l'export de facturation ou de remboursement du client.
- Mets à jour la valeur lorsque le tarif kilométrique remboursé change.
salaryComponents.vehicleBillingType
Catégorie de facturation véhicule. Les valeurs numériques acceptées sont :
0: pas de facturation véhicule1: facturation véhicule privé2: facturation véhicule d'entreprise
Ce champ est stocké à des fins de facturation, comptables, d'export ou d'intégration en aval. Il ne modifie actuellement ni le comportement de codeto plan ni celui de codeto report.
Exemples :
- Utilise
1lorsque les kilomètres doivent être associés à un véhicule privé. - Utilise
2lorsque les kilomètres doivent être associés à un véhicule fourni par l'entreprise. - Utilise
0lorsqu'aucune facturation véhicule ne doit s'appliquer.
salaryComponents.dailyAllowance
Indicateur précisant si les règles d'indemnité journalière s'appliquent au contrat.
codeto report utilise cette valeur pour déterminer si des suppléments dépendant de l'indemnité journalière doivent être générés pour ce contrat.
Le comportement de planification de codeto plan n'est actuellement pas modifié par ce champ.
Exemples :
- Active ce champ pour les collaborateurs qui doivent recevoir des suppléments dépendant de l'indemnité journalière lorsque leurs rapports remplissent les conditions configurées.
- Désactive-le pour les collaborateurs qui ne doivent jamais recevoir ces suppléments, même si d'autres conditions de travail rapportées correspondent.
salaryComponents.vacationBalanceLastPayRun
Solde de vacances reporté du dernier traitement de paie, exprimé en heures.
Il s'agit du point de départ pour les calculs du solde de vacances dans codeto report. codeto report ajoute ensuite les utilisations, corrections et droits de vacances ultérieurs à cette valeur de base.
codeto plan n'affiche ni ne calcule actuellement les soldes de vacances.
Exemples :
- Si le traitement de paie s'est clôturé avec
42heures de vacances restantes, transmets42comme report afin que codeto report parte de ce solde. - Si une correction a déjà été appliquée dans la paie avant la bascule, transmets le solde restant après correction plutôt que la valeur antérieure.
salaryComponents.overtimeBalanceLastPayRun
Solde d'heures supplémentaires reporté du dernier traitement de paie, exprimé en heures.
Il s'agit du point de départ pour les calculs du solde d'heures supplémentaires dans codeto report. Les heures rapportées, compensations et ajustements ultérieurs sont calculés relativement à cette valeur de base.
codeto plan n'affiche ni ne calcule actuellement les soldes d'heures supplémentaires.
Exemples :
- Si le traitement de paie s'est clôturé avec
10.5heures supplémentaires, transmets10.5comme solde de départ. - Si le collaborateur avait compensé toutes ses heures supplémentaires
avant la bascule, transmets
0.
salaryComponents.gavBalanceLastPayRun
Solde GAV reporté du dernier traitement de paie, exprimé en heures.
Il s'agit du point de départ pour les calculs du solde GAV dans codeto report lorsque le suivi GAV s'applique. Les événements pertinents et ajustements ultérieurs sont calculés relativement à cette valeur de base.
codeto plan n'affiche ni ne calcule actuellement les soldes GAV.
Exemples :
- Transmets le solde GAV du dernier traitement de paie lorsque le collaborateur est soumis au suivi GAV.
- Transmets
0si la paie n'a aucun solde GAV restant au moment de la bascule.
salaryComponents.vacationMonthlyAllowance
Droit mensuel à des vacances, exprimé en heures.
codeto report utilise cette valeur pour calculer le droit aux vacances dans le temps, y compris les projections au prorata pour le reste de l'année à partir des périodes de travail actives du collaborateur. Des valeurs incorrectes affectent les soldes de vacances, la projection du droit aux vacances, les récapitulatifs de soldes et les détails de vacances affichés dans codeto report.
codeto plan n'affiche ni ne calcule actuellement les droits aux vacances.
Exemples :
- Si le collaborateur acquiert
14heures de vacances par mois, transmets14. - Pour un collaborateur à temps partiel, transmets le droit mensuel déjà proratisé si le système de paie du client calcule le droit ainsi.