Synchronisation des contrats
Si votre logiciel de gestion ne fait pas partie des ERPs auprès desquels nous sommes en mesure d'automatiser la récupération d'information, vous pouvez utiliser nos APIs pour synchroniser vos données dans Ypareo Skills.
Structure de données
Au sein de Ypareo Skills la structure des données peut être décrite ainsi :
- Votre organisme peut être déployé dans plusieurs villes nous appelons ça des sites
- (optionnel) Chaque site peut avoir plusieurs marques
- Il y a des périodes de formation qui correspondent classiquement aux années scolaires ( 2025/2026, 2026/2027 etc )
- Il y a des programmes de formations ( BTS MCO, Licence RH ) qui sont déployés sur un site et sur une période.
- Il y a des années de formation ( Licence RH 1ière année, License RH 2ième année etc.. )
- Et il y a des groupes qui correspondent à des sessions de formation.
Nous voulons avec cette structure regrouper les apprenants qui suivent la même formation sur le même site pour la même période donnée et la même année.
Cela vous permettra d'avoir un suivi clair.
Ainsi en plus des données sur le contrat, nous vous demandons d'ajouter des informations supplémentaires.
Unicité des ids
Attention dans les données à synchroniser nous vous demandons de spécifier les identifiants de vos utilisateurs, ces identifiants doivent être uniques quelque soit la collection.
Par exemple si un etudiant a le même identifiant qu'un maitre d'apprentissage, l'appel API va vous retourner une erreur.
Si vous avez des tables différentes en fonction des rôles et donc potentiellement des conflits d'ids entre ces tables, merci de prédixer les identifiant envoyés.
Unicité des emails
Dans notre SI, un email est rattaché à un compte et un seul. Si deux tuteurs entreprises ont le même mail, vous ne pourrez pas synchroniser les données.
Différence entre contrat transmis et intégré
Un contrat transmis est une donnée que nous recevons via API.
Un contrat intégré est un contrat transmis que nous avons su associer à une session ( cela nécessite la configuration préalable de votre compte par nos équipes ).
Synchroniser les contrats
Nous envoyer les contrats
Un tableau représentant l'intégralité de vos contrats actifs, cf exemple plus bas. Ci-dessous la liste des champs pour chaque contrat :
| Name | Type | Description |
|---|---|---|
| dateFin | string | Date au format DD/MM/YYYY |
| dateDebut | string | Date au format DD/MM/YYYY |
| nomGroupe* | string | Nom du groupe |
| nomEntreprise* | string | Nom de l'entreprise |
| emailPersonnel* | string | Email du tuteur école |
| prenomPersonnel* | string | Prénom du tuteur école |
| nomPersonnel* | string | Nom du tuteur école |
| codePersonnel* | string | Code du tuteur école, doit être unique parmi tous les utilisateurs |
| emailMaitreApprentissage* | string | Email maitre apprentissage |
| prenomMaitreApprentissage* | string | Prenom maitre apprentissage |
| nomMaitreApprentissage* | string | Nom maitre apprentissage |
| codeMaitreApprentissage* | string | Identifiant du maitre apprentissage, doit être unique parmi tous les utilisateurs |
| nomApprenant* | string | Nom de l'apprenant |
| emailApprenant* | string | email de l'apprenant |
| prenomApprenant* | string | Prenom de l'apprenant |
| codeApprenant* | string | Identifiant de l'apprenant, doit être unique parmi tous les utilisateurs |
| codeGroupe* | string | L'identifiant unique du groupe de l'apprenant |
| codeContrat* | string | L'identifiant unique du contrat |
| codePeriode* | string | Identifiant de la période associée ( le couple codePeriode, nomPeriode doit être unique ) |
| nomPeriode* | string | Nom de la période |
| codeFormation* | string | Identifiant de la formation ( le couple codeFormation, nomFormation doit être unique ) |
| nomFormation* | string | Le nom de la formation |
| codeSite* | string | Identifiant du site ( le couple codeSite, nomSite doit être unique ) |
| nomSite* | string | Nom du site |
| codeMarque | string | Code de la marque |
| nomMarque | string | Nom de la marque |
| codeAnnee* | string | Identifiant de l'année ( le couple codeAnnee, nomAnnee doit être unique ) |
| nomAnnee* | string | Nom de l'année |
| missionTitle | string | Titre de la mission |
| missionDetails | string | Descriptif de la mission |
| monthStartGroup | string | Info de démarrage du groupe permettant de gérer les rentrées décalées |
| rncp | string | codeRNCP |
POST {{URL}}/api/sync/v2/contrats
Réponse 200: OK — Retourne les contrats selon la même structure de données que celle envoyée dans le body
{
"total": 1,
"contrats": []
}
Exemple
[
{
codeContrat: "1234",
dateDebut: "01/09/2025",
dateFin: "30/06/2026",
nomEntreprise: "Auchan",
codeGroupe: "Groupe1",
nomGroupe: "BTS MCO Rennes 1ère année",
codeSite: "Site1",
nomSite: "Rennes",
codePeriode: "Periode1",
nomPeriode: "2025/2026",
codeAnnee: "Annee1",
nomAnnee: "1ère année",
codeFormation: "BTSMCO",
nomFormation: "BTS MCO",
codeApprenant: "Apprenant1",
prenomApprenant: "Prénom apprenant",
nomApprenant: "Nom apprenant",
emailApprenant: "apprenant@email.com",
codePersonnel: "Personnel1",
prenomPersonnel: "Prénom personnel",
nomPersonnel: "Nom personnel",
emailPersonnel: "personnel@email.com",
codeMaitreApprentissage: "MaitreApprentissage1",
prenomMaitreApprentissage: "Prénom MaitreApprentissage",
nomMaitreApprentissage: "Nom MaitreApprentissage",
emailMaitreApprentissage: "MaitreApprentissage@email.com"
}
]
Récupérer tous les contrats intégrés
GET {{URL}}/api/sync/v1/contrats
Paramètres
| In | Nom | Requis | Description |
|---|---|---|---|
| query | page |
non | Numéro de la page à récupérer |
| query | limit |
non | Nombre de contrats maximum à récupérer |
Réponse 200: OK — Retourne les contrats selon la même structure de données que celle envoyée dans le POST au dessus
{
"total": 1,
"contrats": []
}
Récupérer tous les contrats transmis
GET {{URL}}/api/sync/v1/contrats-get-all
Paramètres
| In | Nom | Requis | Description |
|---|---|---|---|
| query | page |
non | Numéro de la page à récupérer |
| query | limit |
non | Nombre de contrats maximum à récupérer |
Réponse 200: OK — Retourne la même réponse que pour les contrats intégrés ci-dessus
{
"total": 1,
"contrats": []
}
Simuler une synchronisation
Cette route est une sorte de dry run sur l'intégration.
POST {{URL}}/api/sync/v1/contrats-diff
Réponse 200: OK — Retourne un objet avec 4 tableaux de contrats
{
"same": [], // contrats similaires à la précédente synchro
"added": [], // nouveaux
"updated": [], // changements détectés
"removed": [] // contrats qui seront archivés
}