Nos APIs
Ici nous vous proposons d'utiliser notre API pour synchroniser les données depuis votre logiciel de gestion vers le notre.
Pour synchroniser les données de votre logiciel vers le notre, nous vous proposons d'utiliser directement l'API REST
Structure de données
Au sein de Campus 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 ( 2020/2021, 2021/2022 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 que l'équipe intégration a configuré les modèles )
Synchroniser les contrats
Nous envoyer les contrats
POST
{{base_url}}/api/sync/v2/contrats
Request Body (format JSON)
Un tableau représentant l'intégralité de vos contrats actifs, cf exemple plus bas. Ci-dessous la liste des champs pour chaque contrats :
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
ccodeContrat*
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
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: "[email protected]",
codePersonnel: "Personnel1",
prenomPersonnel: "Prénom personnel"
nomPersonnel: "Nom personnel",
emailPersonnel: "[email protected]",
codeMaitreApprentissage: "MaitreApprentissage1",
prenomMaitreApprentissage: "Prénom MaitreApprentissage"
nomMaitreApprentissage: "Nom MaitreApprentissage",
emailMaitreApprentissage: "[email protected]",
}
]
Response
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 intégrés
GET
{{base_url}}/api/sync/v1/contrats
Query Parameters
limit
number
Nombre de contrats maximum à récupérer (optionnel)
page
number
Numéro de la page à récupérer (optionnel)
Response
Retourne les contrats selon la même structure de donnees que celle envoyee dans le POST au dessus.
{
"total": 1,
"contrats": []
}
Récupérer tous les contrats transmis
GET
{{base_url}}/api/sync/v1/contrats-get-all
Query Parameters
limit
number
Nombre de contrats maximum à récupérer (optionnel)
page
number
Numéro de la page à récupérer (optionnel)
Response
Retourne la même réponse que pour les contrats transmis au dessus.
{
"total": 1,
"contrats": []
}
Simuler une synchronisation
POST
{{base_url}}/api/sync/v1/
contrats-diff
Cette route est une sorte de dry run sur l'intégration.
Response
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
}
Supprimer tous les contrats
DELETE
{{base_url}}/api/sync/v1/contrats
Attention cette route est a utiliser uniquement dans le bac à sable
{
// Response
}
Synchroniser un calendrier de groupe au format ICS
POST
{{URL}}/api/sync/v1/calendar-group-ics
Headers
Content-Type
application/json
Authorization
Bearer <token>
Body
groupId
string
code du groupe transmis précédemment
calendarUrl
string
lien calendrier ics
Response
Synchroniser les absences d'un apprenant
POST
{{URL}}/api/sync/v1/absences-for-student
Utilisez cet endpoint pour envoyer les absences d'un apprenant, qui seront affichées dans l'onget Absences / Retard sur Campus Skills.
Il est important d'envoyer l'intégralité des absences que vous souhaitez rendre visible dans l'onglet. Concrètement, si vous envoyez d'abord une première absence, puis plus tard une deuxième, il faudra lors du deuxième appel envoyer les deux absences. Si vous n'envoyez que la deuxième, la première n'apparaitra plus.
Headers
Content-Type
application/json
Authorization
Bearer <token>
Body (format JSON)
La syntaxe "$" indique un sous champ de l'objet (cf exemple plus bas)
email
string*
email de l'apprenant
data
array*
Liste d'absence
data.$.dateDebut
string*
Date de début au format DD/MM/YYYY-HH:mm
data.$.dateFin
string*
Date de fin - Date de début au format DD/MM/YYYY-HH:mm
data.$.type
string*
type ( absence
ou retard
)
data.$.isJusitifie
boolean*
data.$.motif
string
Exemple
{
"email": "[email protected]",
"data": [
{
"dateDebut": "08/09/2025-9:00",
"dateFin": "08/09/2025-17:00",
"type": "absence",
"isJusitifie": true,
"motif": "maladie"
},
{
"dateDebut": "10/09/2025-14:00",
"dateFin": "10/09/2025-15:00",
"type": "absence",
"isJusitifie": false,
"motif": ""
}
]
]
Response
Last updated
Was this helpful?