<[object Object]>

# Implémenter les webhooks Jobpass pour une actualisation des données candidats en temps réel

Les webhooks vous permettront de recevoir des mises à jour en temps réel des profils de vos candidats.

# Signature des Webhooks

Jobpass signe tous les événements de Webhook qu'il envoie à vos endpoints en incluant un header Jobpass-Signature dans l'en-tête HTTP de chaque événement. Cela vous permet de vérifier que les événements ont été envoyés par Jobpass et non par un tiers.

Avant de pouvoir vérifier les signatures, vous devez récupérer la clé secrète de votre endpoint dans les paramètres Webhooks de votre Dashboard. Pour ce faire, suivez ces étapes :

  1. Rendez-vous sur votre dashboard d'administration et cliquez sur l'onglet "API".
  2. Cherchez le formulaire des Webhooks, où vous serez invité à saisir l'URL sur laquelle vous souhaitez recevoir nos événements.
  3. Après avoir enregistré votre URL, une clé secrète sera générée et vous sera transmise. Note : Si vous mettez à jour votre URL, une nouvelle clé sera générée.

# Vérification de la signature

Pour vérifier que la signature est correcte, suivez ces étapes :

  1. Récupérez la valeur de l'en-tête HTTP Jobpass-Signature de l'événement reçu.
  2. Encryptez le payload reçu via l'algorithme HMAC en utilisant la fonction de hachage SHA-512 en mode binaire et non en mode hexadécimal, avec comme clé secrète la clé générée au moment du Webhook.
  3. Ensuite, encodez le résultat obtenu en base64 sans padding.
  4. Comparez le résultat obtenu avec la valeur de l'en-tête Jobpass-Signature.

Si les deux valeurs correspondent, cela signifie que l'événement a été envoyé par Jobpass et n'a pas été altéré en transit, ce qui garantit l'authenticité et l'intégrité des données.

# Exemple de payload de requête

Voici un exemple de payload de requête que vous recevrez lorsque vous implémenterez nos webhooks :

{
  "meta": {
    "version": "1.0.0",
    "action": "update",
    "object": "jobprofile",
    "timestamp": "2023-07-10T08:45:53.832324718Z",
    "webhook_id": "xxxxxxxxxxxxxxxxxx"
  },
  "data": {
    "Id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "WorkAvailability": false,
    "WorkSearchingStatus": "UNAVAILABLE",
    "JobProfileId": null
  }
}

Le champ meta reste constant et fournit des informations sur les données contenues dans le champ data.

Le champ meta.object spécifie le type d'objet concerné par le webhook courant.

Le champ meta.action indique l'action effectuée, qui peut être "add" (ajout), "update" (mise à jour) ou "delete" (suppression). Selon l'action, le contenu du payload peut varier. Dans cet exemple, nous avons une action "update" avec des informations sur le JobProfile.

# Objets de l'API

# User

L'objet User représente l'utilisateur du service.

# Propriétés de l'objet User

  • Id (string): L'identifiant unique de l'utilisateur.
  • WorkAvailability (bool): Disponibilité de l'utilisateur pour travailler (optionnel).
  • WorkSearchingStatus (WorkSearchingStatus): Statut de recherche d'emploi de l'utilisateur (optionnel).
  • WorkSearchingJobs ([]*OccupationMapper): Liste des emplois recherchés par l'utilisateur (optionnelle).
  • WorkSearchingContracts ([]*ContractType): Liste des types de contrat recherchés par l'utilisateur (optionnelle).
  • WorkLocalityPreferences ([]*Address): Liste des préférences de localité de travail de l'utilisateur (optionnelle).
  • RemotePreference (*WorkingRemotePreference): Préférence de travail à distance de l'utilisateur (optionnelle).
  • JobProfileId (*string): L'identifiant du JobProfile associé à l'utilisateur (optionnel).

# JobProfile

L'objet JobProfile représente le CV connecté de l'utilisateur.

# Propriétés de l'objet JobProfile

  • Id (string): L'identifiant unique du JobProfile.
  • OrganisationName (string): Le nom de l'organisation associée au JobProfile.
  • Name (string): Le nom du JobProfile.
  • Description (*string): La description du JobProfile (optionnelle).
  • Address (Address): L'adresse associée au JobProfile (optionnelle).
  • Delivered (time.Time): La date de création ou de mise à jour du JobProfile.
  • UserId (string): L'identifiant de l'utilisateur associé au JobProfile.
  • JobProfileId (string): L'identifiant du JobProfile.

# Experience

L'objet Experience représente l'expérience professionnelle d'un utilisateur.

# Propriétés de l'objet Experience

  • Id (string): L'identifiant unique de l'expérience.
  • JobName (string): Le nom du poste (optionnel).
  • OrganisationName (string): Le nom de l'organisation associée à l'expérience (optionnel).
  • Description (*string): La description de l'expérience (optionnelle).
  • Address (Address): L'adresse associée à l'expérience (optionnelle).
  • ContractType (ContractType): Le type de contrat (optionnel).
  • Start (time.Time): La date de début de l'expérience (optionnelle).
  • End (*time.Time): La date de fin de l'expérience (optionnelle).
  • UserId (string): L'identifiant de l'utilisateur associé à l'expérience (optionnel).
  • JobProfileId (string): L'identifiant du JobProfile associé à l'expérience (optionnel).

# Formation

L'objet Formation représente la formation d'un utilisateur.

# Propriétés de l'objet Formation

  • Id (string): L'identifiant unique de la formation.
  • OrganisationName (string): Le nom de l'organisation associée à la formation.
  • Name (string): Le nom de la formation.
  • Description (*string): La description de la formation (optionnelle).
  • Address (Address): L'adresse associée à la formation (optionnelle).
  • Delivered (time.Time): La date de délivrance de la formation.
  • UserId (string): L'identifiant de l'utilisateur associé à la formation.
  • JobProfileId (string): L'identifiant du JobProfile associé à la formation.

# ContractType

  • LIBERAL: Contrat libéral.
  • PERMANENT_CONTRACT: Contrat à durée indéterminée.
  • FIXED_TERM_CONTRACT: Contrat à durée déterminée.
  • TEMPORARY_WORK: Travail temporaire.
  • APPRENTICESHIP: Apprentissage.
  • INTERNSHIP: Stage.
  • EDUCATION: Formation.
  • VOLUNTARY: Volontariat.

# OccupationMapper

Le type OccupationMapper est utilisé pour mapper une occupation à un référentiel spécifique.

# Propriétés de l'objet OccupationMapper

  • Rome (*OccupationDirectory): Représente une correspondance avec le Répertoire opérationnel des métiers et des emplois (ROME).
  • Name (*string): Utilisé lorsque l'utilisateur a saisi une occupation qui n'a pas pu être mappée à un référentiel existant. Dans ce cas, seul le champ Name sera rempli.

# OccupationDirectory

Le type OccupationDirectory représente une correspondance avec un répertoire d'occupations spécifique.

# Propriétés de l'objet OccupationDirectory

  • RomeCode (string): Code français standardisant les emplois, basé sur le Répertoire opérationnel des métiers et des emplois (ROME). En savoir plus (opens new window)
  • RomeName (string): Nom officiel français de l'emploi basé sur le Répertoire opérationnel des métiers et des emplois (ROME).
  • IscoCode (string): Code européen standardisant les emplois, basé sur la Classification internationale type des professions (CITP). En savoir plus (opens new window)
  • IscoName (string): Nom officiel européen de l'emploi basé sur la Classification internationale type des professions (CITP).

# Address

Le type Address représente une adresse.

# Propriétés de l'objet Address

  • Address (string): L'adresse complète.
  • Road (string): La rue (optionnelle).
  • Country (string): Le pays (optionnel).
  • City (string): La ville (optionnelle).
  • PostalCode (string): Le code postal (optionnel).

# WorkingRemotePreference

Le type WorkingRemotePreference représente la préférence de travail à distance de l'utilisateur.

# Valeurs possibles de WorkingRemotePreference

  • WorkingRemotePreferenceFullRemote: Travail à distance à temps plein.
  • WorkingRemotePreferencePartialRemote: Travail à distance à temps partiel.
  • WorkingRemotePreferenceNoRemote: Aucun travail à distance.
  • WorkingRemotePreferenceAny: N'importe quelle préférence de travail à distance.

# WorkSearchingStatus

Le type WorkSearchingStatus représente le statut de recherche d'emploi de l'utilisateur.

# Valeurs possibles de WorkSearchingStatus

  • WorkSearchingStatusActivelySearching: Recherche active d'emploi.
  • WorkSearchingStatusListeningToOpportunities: Écoute des opportunités.
  • WorkSearchingStatusUnavailable: Indisponible pour la recherche d'emploi.

Veuillez noter que lorsque les champs sont marqués comme optionnels, cela signifie qu'ils peuvent être vides lors de l'envoi.