Pré-requis
Accès administratif à la plateforme Rise Up.
Compréhension de base des technologies web et des API.
Accès à la configuration de l'URL du client ou du connecteur.
Ce qu'il possible de faire :
Les plateformes externes peuvent recevoir des données en direct de Rise Up (utilisateurs, formations, inscriptions aux formations, progression).
Ce qui n'est pas faisable :
Rise Up n'est pas synchronisé avec les données externes.
Ne supprime pas les douleurs d'intégration du client ou du partenaire.
Présentation de la fonctionnalité :
Les webhooks permettent aux applications web de communiquer entre elles, en envoyant des messages automatisés pour notifier les autres qu'un nouvel événement s'est produit. Dans une API typique, l'application côté client appelle l'application côté serveur et consomme des données. Les webhooks sont souvent appelés 'API inversées' car ils inversent cette relation.
Au lieu que le serveur attende des nouvelles du client, l'application côté serveur appellera l'application côté client via une URL de point de terminaison fournie par l'application cliente. Cette URL de point de terminaison (fournie par le client et consommée par l'application côté serveur) est un webhook.
Accéder à la page de création de Webhook
Accédez à la section de gestion des webhooks dans votre tableau de bord administrateur en cliquant sur l'icône engrenage .
Configurer les paramètres du Webhook
Sur la page de création de webhook, il y a plusieurs champs. À l'exception des cases à cocher, ils sont tous obligatoires.
- Nom du webhook : Nom qui sera affiché sur la plateforme. Utile pour que l'administrateur identifie rapidement l'élément.
-
URL du webhook : URL du client ou du connecteur où Rise Up enverra les données. Cette URL doit être valide et accessible à tout moment par Rise Up.
Exemple —> 'https://www.riseup.com/integration/Subscriptions/users'
-
Entité : Liste des éléments sur lesquels le webhook tiendra le client informé, une seule entité peut être sélectionnée.
Exemple 'Inscription à une formation' —> enverra des informations pour chaque inscription à une formation dans l'entreprise. Cela peut être une création, une suppression, une complétion, etc.
- Actions : Filtres sur la liste des actions auxquelles s'abonner, une ou plusieurs actions peuvent être sélectionnées.
- Activer l'authentification : Ajoute un en-tête d'autorisation contenant un encodage base64 du mot de passe utilisateur que vous mentionnez. Vous pouvez restreindre votre abonnement pour n'autoriser que les requêtes venant avec cet en-tête.
- Activer la signature Hmac : Ajoute un en-tête 'X-RISEUP-SIGNATURE' contenant une signature hmac de la charge utile de l'événement avec le secret de votre choix. C'est un moyen plus sécurisé (mais plus complexe) d'assurer la sécurité de vos webhooks.
-
Renseignez les 6 champs obligatoires pour créer votre webhook
-
Reliez une entité correspondante que vous voulez suivre
-
Sélectionnez les actions pour lesquelles vous souhaitez être notifié
-
Testez, éditez, supprimez vos webhooks grâce aux 3 boutons d'actions rapides
-
Cliquez sur l'icône boîte à outil pour tester votre webhook
-
Enclenchez le bouton de désactivation ou réactiver un webhook
Liste d'audit des webhooks :
Une fois qu'un webhook est correctement configuré, les événements commenceront à être envoyés à l'abonnement. Sur cette interface, l'administrateur peut examiner les différents événements qui sont envoyés via ses webhooks. Cela est précieux pour tout débogage requis pendant la phase de développement. Il existe 4 états différents pour un événement :
Programmé : L'événement est sur le point d'être envoyé.
Réussi : L'événement est envoyé avec succès et reçu par le client.
Échoué : Le client répond avec une erreur 5xx ou 4xx.
Annulé : La désactivation d'un webhook annulera les événements programmés.
Liste des événements
Voici un aperçu rapide de toute la liste des événements. Pour avoir une liste plus complète, veuillez vous référer à la documentation API. Pour chacune de ces entités, nous envoyons un événement lorsqu'un élément est soit créé, mis à jour ou supprimé. En fonction de l'entité, des informations spécifiques peuvent être envoyées via une charge utile ou un type d'événement spécifique. Voici une liste avec les entités et leurs spécificités :
Gestion des délais et des erreurs des webhooks
L'exécution des webhooks peut échouer en raison de délais d'attente ou d'erreurs.
Pour chaque événement dont l'appel de webhook échoue, les appels sont réessayés jusqu'à 7 fois selon les plannings suivants :
Pour marquer une notification de webhook réussie, nous attendons que le code de statut HTTP soit 2XX de l'URL du webhook.
Si nous ne recevons pas de code de réponse 2XX, nous réessayons d'appeler.
Surveiller l'activité du Webhook
Accédez à la section d'audit des webhooks pour examiner les événements envoyés via votre webhook. Cela est crucial pour le débogage et pour assurer un fonctionnement fluide.
Détails des évènements
Les détails des événements incluent des informations spécifiques sur chaque type d'événement, comme les sessions de classe, les inscriptions aux sessions de classe, les formations, les demandes de formation, les inscriptions aux formations, les groupes, les parcours d'apprentissage, etc. Ces détails sont envoyés sous forme de charge utile JSON avec des informations telles que la date de création, la date de mise à jour, l'état, l'identifiant, le titre, la langue, la durée éducative, etc.
Pour plus d'informations, veuillez consulter la documentation API de Rise Up.
voir
{ "webhook_version": "1.0.0", "content": { "created_date": "2024-10-09T00:00:00.000000Z", // Event creation date "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date "deleted_date": null, "id": 1, // Classroom session ID "title": "session title", "start_date": "2024-10-11T00:00:00.000000Z", "end_date": "2024-10-12T16:00:00.000000Z", "timezone": "Europe/Paris", "state": "pending", "meeting_url": null, "location": "Paris", "language": "English", "room": null, "edu_duration": 6, "seats": 30, "reference": null }, "sent_at": "2024-10-10T16:14:47.149305Z", "event_type": "classroom_session_created", "company_id": 6499, "id": 237848 }
Inscription Session en classe
voir
{ "webhook_version": "1.0.0", "content": { "created_date": "2024-10-09T00:00:00.000000Z", // Registration creation date "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date "deleted_date": null, "id": 1, "state": "pending", "edu_duration": 17, "reference": null, "attended": null, "user": { "created_date": "2024-10-09T00:00:00.000000Z", "updated_date": "2024-10-10T16:00:00.000000Z", "deleted_date": null, "id": 1, "firstname": "test_firstname", "lastname": "test_lastname", "email": "test_email", "username": "test_username", "role": "admin", "id_partner": null, "language": "english", "rhid": null }, "classroom_session": { "created_date": "2024-10-09T00:00:00.000000Z", "updated_date": "2024-10-10T16:00:00.000000Z", "deleted_date": null, "id": 1, "title": "session title", "start_date": "2024-10-11T00:00:00.000000Z", "end_date": "2024-10-12T16:00:00.000000Z", "timezone": "Europe/Paris", "state": "pending", "meeting_url": null, "location": "Paris", "language": "English", "room": null, "edu_duration": 6, "seats": 30, "reference": null } }, "sent_at": "2024-10-10T16:17:15.493462Z", "event_type": "classroom_session_registration_created", "company_id": 6499, "id": 237853 }
Formation
voir
{ "webhook_version": "1.0.0", "content": { "created_date": "2024-10-09T00:00:00.000000Z", // Course creation date "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date "deleted_date": null, "id": 1, "title": "Training test", "language": "English", "skills": [ "skill_one", "skill_two" ], "reference": null, "categories": [ "category_one" ], "keywords": [], "edu_duration": 10 }, "sent_at": "2024-10-10T16:18:45.946478Z", "event_type": "course_created", "company_id": 6499, "id": 237856 }
Demande de Formation
voir
{ "webhook_version": "1.0.0", "content": { "created_date": "2024-10-09T00:00:00.000000Z", // Request creation date "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date "deleted_date": null, "id": 1, "description": "test description of the training request", "reason": "test Reason of the training request", "duration": 10, "location": "test Location of the training request", "theme": null, "objectives": "test_objectives", "organism_request": null, "state": "pending", "concerned_users": [], "requester": { "created_date": "2024-10-09T00:00:00.000000Z", "updated_date": "2024-10-10T16:00:00.000000Z", "deleted_date": null, "id": 1, "firstname": "test_firstname", "lastname": "test_lastname", "email": "test_email", "username": "test_username", "role": "admin", "id_partner": null, "language": "english", "rhid": null }, "course": null }, "sent_at": "2024-10-10T16:19:20.097978Z", "event_type": "course_request_created", "company_id": 6499, "id": 237858 }
Inscription Formation
voir
{ "webhook_version": "1.0.0", "content": { "created_date": "2024-10-09T00:00:00.000000Z", // Registration creation date "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date "deleted_date": null, "id": 1, "state": "validated", "progress": 50, "reference": null, "score": 10, "total_time": 13, "user_validator": null, "course": { "created_date": "2024-10-09T00:00:00.000000Z", "updated_date": "2024-10-10T16:00:00.000000Z", "deleted_date": null, "id": 1, "title": "Training test", "language": "English", "skills": [ "skill_one", "skill_two" ], "reference": null, "categories": [ "category_one" ], "keywords": [], "edu_duration": 10 }, "user": { "created_date": "2024-10-09T00:00:00.000000Z", "updated_date": "2024-10-10T16:00:00.000000Z", "deleted_date": null, "id": 1, "firstname": "test_firstname", "lastname": "test_lastname", "email": "test_email", "username": "test_username", "role": "admin", "id_partner": null, "language": "english", "rhid": null } }, "sent_at": "2024-10-10T16:18:59.116893Z", "event_type": "course_registration_created", "company_id": 6499, "id": 237857 }
Groupe
voir
{ "webhook_version": "1.0.0", "content": { "created_date": "2024-10-09T00:00:00.000000Z", // Group creation date "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date "deleted_date": null, "id": 1, "name": "Group test", "id_partner": null, "reference": null }, "sent_at": "2024-10-10T16:19:34.536209Z", "event_type": "group_created", "company_id": 6499, "id": 237860 }
Parcours de Formation
voir
{ "webhook_version": "1.0.0", "content": { "created_date": "2024-10-09T00:00:00.000000Z", // Path creation date "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date "deleted_date": null, "id": 1, "title": "test training path title", "id_partner": null }, "sent_at": "2024-10-10T16:22:38.324490Z", "event_type": "learning_path_created", "company_id": 6499, "id": 237867 }
Inscription Parcours de Formation
voir
{ "webhook_version": "1.0.0", "content": { "created_date": "2024-10-09T00:00:00.000000Z", // Registration creation date "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date "deleted_date": null, "id": 1, "state": "cancelled", "progress": 75, "score": 1250, "total_time": 15, "learning_path": { "created_date": "2024-10-09T00:00:00.000000Z", "updated_date": "2024-10-10T16:00:00.000000Z", "deleted_date": null, "id": 1, "title": "test training path title", "id_partner": null }, "user": { "created_date": "2024-10-09T00:00:00.000000Z", "updated_date": "2024-10-10T16:00:00.000000Z", "deleted_date": null, "id": 1, "firstname": "test_firstname", "lastname": "test_lastname", "email": "test_email", "username": "test_username", "role": "admin", "id_partner": null, "language": "english", "rhid": null } }, "sent_at": "2024-10-10T16:25:05.054835Z", "event_type": "learning_path_registration_created", "company_id": 6499, "id": 237878 }
Etape Progression
voir
{ "webhook_version": "1.0.0", "content": { "created_date": "2024-10-09T00:00:00.000000Z", // When Learner is registered to course "updated_date": "2024-10-10T13:00:00.000000Z", // When Last step was performed "deleted_date": null, "id": 1, // userstepstate Id (See API definition) "course_subscription_id": 1, // Course subscription Id (see API definition) "progression": 0, // From 0 to 100 is the % of completion "timespent": 0 // Number of seconds passed on training }, "sent_at": "2024-10-10T13:16:35.118826Z", "event_type": "step_progress", "company_id": 6499, "id": 236761 // Unique ID of webhook, used for idempotency }
Utilisateur
voir
{ "webhook_version": "1.0.0", "content": { "created_date": "2024-10-09T00:00:00.000000Z", // User creation date "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date "deleted_date": null, "id": 1, "firstname": "test_firstname", "lastname": "test_lastname", "email": "test_email", "username": "test_username", "role": "admin", "id_partner": null, "language": "english", "rhid": null }, "sent_at": "2024-10-10T16:23:20.428155Z", "event_type": "user_created", "company_id": 6499, "id": 237870 }
Inscription Objectif
voir
{ "webhook_version": "1.0.0", "content": { "created_date": "2024-10-09T00:00:00.000000Z", // Registration creation date "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date "deleted_date": null, "id": 1, "state": "validated", "progress": 50, "end_date": "2024-10-11T00:00:00.000000Z", "experience_points": 1000, "objective": { "created_date": "2024-10-09T00:00:00.000000Z", "updated_date": "2024-10-10T16:00:00.000000Z", "deleted_date": null, "id": 1, "title": "Test objective", "start_date": "2024-10-11T00:00:00.000000Z", "end_date": "2024-10-12T16:00:00.000000Z", "experience_points": 1500 }, "user": { "created_date": "2024-10-09T00:00:00.000000Z", "updated_date": "2024-10-10T16:00:00.000000Z", "deleted_date": null, "id": 1, "firstname": "test_firstname", "lastname": "test_lastname", "email": "test_email", "username": "test_username", "role": "admin", "id_partner": null, "language": "english", "rhid": null } }, "sent_at": "2024-10-10T16:23:05.907077Z", "event_type": "objective_registration_created", "company_id": 6499, "id": 237868 }
-
Problème : Le webhook ne se déclenche pas comme prévu.
Solution : Vérifiez l'accessibilité de l'URL du webhook et assurez-vous que les actions et entités sélectionnées correspondent aux événements que vous souhaitez capturer. Consultez les journaux du webhook pour détecter d'éventuelles erreurs.
Problème : Erreurs lors de la réception des données côté client.
Solution : Vérifiez que le point de terminaison du client est configuré pour accepter les requêtes POST et peut gérer les formats de données entrants. Vérifiez les éventuelles incompatibilités d'authentification ou de signature. -
Peut-on configurer plusieurs webhooks pour différentes entités ?
- Oui, vous pouvez configurer plusieurs webhooks, chacun pour différentes entités et actions selon vos besoins.
Puis-je configurer plus de 5 webhooks ?
- Oui, vous pouvez, mais uniquement après avoir contacté le support client. Après avoir atteint le niveau 3, nous pouvons augmenter le nombre de webhooks.
La livraison des webhooks est-elle rapide ?
- La livraison des webhooks est relative à l'environnement. Tous nos webhooks en production devraient être envoyés en moins d'une minute. En préproduction, l'objectif est de 10 minutes.
Les webhooks sont-ils sécurisés ?
- Les webhooks peuvent être sécurisés à l'aide d'en-têtes d'authentification et de signatures HMAC pour garantir que les données ne sont accessibles qu'aux destinataires autorisés. -
[Documentation technique des webhooks Documentation API pour la liste détaillée des entités et des actions]
Pour plus d'assistance, soumettez une demande :
[Demande de support Rise Up]