BETA - Création et envoi d'un contrat d'apprentissage à un OPCO
Avant-propos
Un organisme de formation CFA peut connecter Wedof à aux différents OPCOs, permettant notamment la remontée des contrats OPCOs déjà signés et la création des dossiers de formation associés (cf. https://doc.wedof.fr/article/21-connexion-opco-cfa)
Néanmoins, il y a le cas de figure inverse, où un besoin de formation est identifié et mène à un financement OPCO : cette fois ci c'est la création d'un dossier de formation et d'un contrat d'apprentissage dans Wedof qui mène à son envoi à l'OPCO.
Aujourd'hui, cette fonctionnalité est limitée à l'API, la documentation suivante est donc assez technique et détaille pas-à-pas les différentes étapes correspondantes. Néanmoins, les dossiers et contrats correspondants apparaîtront bien dans l'interface utilisateur de Wedof. La création de dossier de formation peut mener à la création de dossiers de certification chez les certificateurs correspondants.
La fonctionnalité est disponible pour tous les OPCOs sauf Santé qui ne l'a pas encore mise en production.
Prérequis
- L'OF doit avoir compte Wedof avec un abonnement payant permettant la manipulation des contrats d'apprentissage et le cas échéant l'option associée,
- L'OF doit disposer d'un numéro UAI et l'avoir renseigné dans Wedof (paramètres de l'organisme),
- L'OF doit être partenaire de la certification visée (ou certification du Ministère), certification qui doit être RNCP et active,
- L'OF doit avoir renseigné les clés d'API OPCO CFA valides sur son compte Wedof pour les OPCOs visés (https://doc.wedof.fr/article/21-connexion-opco-cfa)
Procédure générale
Le fonctionnement repose sur le fait de décrire un besoin de formation et de financement par un OPCO dans Wedof via un dossier de formation et un contrat d'apprentissage, puis le moment venu d'envoyer les données du Cerfa via un endpoint dédié.
Le besoin de formation pour un apprenant sur une certification donnée est représenté par un dossier de formation. Il peut y avoir plusieurs contrats d'apprentissage associés.
Pour cela il y a quatre étapes principales :
- Création formation (facultatif) : Créer l'entrée de catalogue de formation : Formation > Action de Formation > Session, peut être réutilisée entre différents dossiers sur la même certification.
- Création dossier de formation et apprenant : Représenter le besoin de formation par un dossier de formation Wedof à partir d'un apprenant et d'une session de formation.
- Création contrat d'apprentissage brouillon : Créer un ou plusieurs contrats d'apprentissage (possiblement sur plusieurs OPCOs différents) à l'état brouillon (" draft") pour représenter le besoin de financement (à partir du dossier de formation créé).
- Envoi contrat d'apprentissage : Envoyer un contrat d'apprentissage à l'OPCO pour soliciter le financement, en y joignant les données du Cerfa.
1.i. Récupérer la certification visée
Rechercher la certification par son code RNCP afin de récupérer son certifInfo , nécessaire pour créer la formation. Si vous le connaissez déjà, cette étape peut être ignorée.
Endpoint
GET /api/certifications/certifInfos/RNCP12345?enabled=true
https://www.wedof.fr/api/doc/operations/get_app_api_certification_list
Paramètres
enabled: permet de limiter aux certifications actives, dans le rare cas où plusieurs certifications auraient le même code RNCP cela permet de limiter les retour
Réponse
Attention le résultat est un tableau de certifInfo , dans les très rares cas où il y en aurait plusieurs, il faut se déterminer lequel est le bon.
1.ii. Créer la formation
Créer une formation liée à la certification souhaitée. Si elle existe déjà, cette étape peut être ignorée.
Prérequis
- L'OF doit être partenaire actif de cette certification (ou la certification doit être portée par un ministère).
- La certification doit être RNCP et active.
Endpoint
POST /api/trainings
https://www.wedof.fr/api/doc/operations/post_app_api_training_create
Payload
{
"title": "CAP Boulanger - Apprentissage",
"certifInfo": "90375"
}
Champs obligatoires :
titlepeut être le nom de la certification pour faire plus simplecertifInfo
Réponse
Conserver l'id de la formation retourné dans la réponse pour l'envoyer lors de la création de l'action de formation.
1.iii. Créer l'action de formation
Créer une action de formation rattachée à la formation. Si elle existe déjà, cette étape peut être ignorée.
Endpoint
POST /api/trainingActions
https://www.wedof.fr/api/doc/operations/post_app_api_trainingaction_create
Payload
{
"trainingId": 123,
"teachingMethod": "0",
"indicativeDuration": 1200,
"totalTvaTTC": 8500.00
}
Champs obligatoires :
trainingIdteachingMethodindicativeDurationtotalTvaTTC
Énumérations :
teachingMethod:"0"= présentiel,"1"= à distance,"2"= mixte
Réponse
Conserver l'id de l'action de formation retourné dans la réponse pour l'envoyer lors de la création de la session.
1.iv. Créer la session
Créer une session rattachée à l'action de formation. Si elle existe déjà, cette étape peut être ignorée.
Endpoint
POST /api/sessions
https://www.wedof.fr/api/doc/operations/post_app_api_session_create
Payload
{
"trainingActionId": 456
}
Champs obligatoires :
trainingActionId
Réponse
Conserver l'id de la session retourné dans la réponse pour l'envoyer lors de la création du dossier de formation.
> Si les dates ne sont pas communiquées, elle pourront l'être sur le dossier de formation directement
2.i. Créer l'apprenant
Créer l'apprenant (candidat/stagiaire) avec son NIR (numéro de sécurité sociale).
Si l'apprenant existe déjà, il y a une méthode pour le récupérer : https://www.wedof.fr/api/doc/operations/get_byEmail
Endpoint
POST /api/attendees
https://www.wedof.fr/api/doc/operations/post_app_api_attendee_create
Payload
{
"lastName": "Dupont",
"firstName": "Jean",
"email": "jean.dupont@example.com",
"phoneNumber": "0612345678",
"gender": "male"
}
Champs obligatoires :
lastNamefirstNameemailphoneNumber(ouphoneFixed)gender
Énumérations :
gender:maleoufemale
Réponse
Conserver l'id de l'apprenant retourné dans la réponse pour l'envoyer lors de la création du dossier de formation.
2.ii Créer le dossier de formation
Créer le dossier de formation en précisant le type opcoCfa .
Endpoint
POST /api/registrationFolders
https://www.wedof.fr/api/doc/operations/post_app_api_registrationfolder_create
Payload
{
"sessionId": 789,
"attendeeId": 101,
"totalTTC": 8500.00,
"type": "opcoCfa"
}
Champs obligatoires :
sessionIdattendeeIdtotalTTCtype
Énumérations :
- Le
typedoit impérativement être"opcoCfa"pour pouvoir créer un contrat d'apprentissage par la suite - La voie d'accès (
accessModality) est automatiquement définie à"apprentissage"
Réponse
Conserver l'externalId du dossier de formation retourné dans la réponse pour l'envoyer lors de la création du contrat d'apprentissage.
3. Créer le contrat d'apprentissage
Créer le contrat d'apprentissage sur le dossier de formation. Le contrat est créé à l'état draft (brouillon).
Endpoint
POST /api/workingContracts
https://www.wedof.fr/api/doc/operations/post_app_api_workingcontract_create
Payload
{
"registrationFolderExternalId": "O69aae11ed42e6",
"type": "11",
"startDate": "2026-09-01T00:00:00.000Z",
"endDate": "2027-06-30T00:00:00.000Z",
"financer": "opcoCfaAtlas"
}
Champs obligatoires :
registrationFolderExternalIdtypestartDateendDatefinancer
Énumérations :
type: type de contrat (valeurs possibles :11,21,22,23,31,32,33,34,35,36,37,38)financer: OPCO financeur (valeurs possibles :opcoCfaAtlas,opcoCfaAfdas,opcoCfaEp,opcoCfaMobilites,opcoCfaAkto,opcoCfaOcapiat,opcoCfaUniformation,opcoCfa2i,opcoCfaConstructys,opcoCfaSante,opcoCfaOpcommerce)
Réponse
Conserver l'id du contrat d'apprentissage retourné dans la réponse pour le soumettre.
4.i. Soumettre le contrat d'apprentissage
Une fois le contrat créé à l'état brouillon, le soumettre avec les données du Cerfa.
Wedof procède à deux étapes de validation pour identifier les erreurs avant l'envoi à l'Opco :
- format des données transmises d'après l'API des Opcos (avec parfois des règles spécifiques dû à la non conformité des APIs)
- cohérence avec les données saisies dans Wedof (organisme de formation, certification, identité de l'apprenant, dates du contrat)
Endpoint
POST /api/workingContracts/{id}/submit
https://www.wedof.fr/api/doc/operations/post_app_api_workingcontract_submit
Pour tester les étapes de validation sans réellement envoyer le dossier à l'OPCO, vous pouvez utiliser le paramètre "simulate" :
POST /api/workingContracts/{id}/submit?simulate=true
Payload
{
"draftRawData": {
"cerfa": {
"employeur": "...",
"apprenti": "...",
"...": "..."
}
}
}
Champs obligatoires :
draftRawData: objet compatible avec l'API Convergence Apprentissage voir https://www.cfadock.fr/portail_developpeur#/tabs/openapi le endpoint POST/v1/dossiers
Réponse
Si le dossier est bien transmis à l'OPCO, alors la requête aboutit et le WorkingContract passé à l'état sent est retourné, ainsi qu'un identifiant côté OPCO (externalIdTrainingOrganism ).
S'il y a des erreurs de validation renvoyées par l'OPCO, elles vous seront retournées.
4.ii. Soumettre la convention de formation
COMING SOON
Webhooks
Des Webhooks sont disponibles "écouter" les événements sur les contrats d'apprentissage, notamment lorsqu'ils sont engagés par l'OPCO.
Néanmoins, les OPCOs ne mettent l'information à jour qu'une fois par jour, il peut donc y avoir un délai.
Événements CRUD :
workingContract.created: Création d'un contratworkingContract.updated: Modification d'un contratworkingContract.deleted: Suppression d'un contrat
Événements de changement d'état :
workingContract.sent: TransmisworkingContract.pendingAcceptation: En cours d'instructionworkingContract.accepted: EngagéworkingContract.cancelled: AnnuléworkingContract.refused: RefuséworkingContract.broken: RuptureworkingContract.completed: Soldé
▎L'état draft ne déclenche pas de webhook (état initial interne).
Le payload contient la sérialisation complète du contrat