Webhooks

Événements

Tous les types d'événements webhook disponibles et leurs structures de charge utile.

Enveloppe d'événement

Chaque événement utilise la même structure de niveau supérieur :

json
{
  "event": "user.created",
  "data": { ... },
  "timestamp": "2026-01-15T10:30:00.000Z"
}

Événements utilisateur

user.created

Déclenché lorsqu'un nouvel utilisateur s'inscrit pour la première fois ou est créé via l'API.

event.data
json
{
  "event": "user.created",
  "data": {
    "user": {
      "id": "usr_abc123",
      "email": "user@example.com",
      "displayName": "John Doe",
      "emailVerified": false,
      "isBanned": false,
      "avatarUrl": null,
      "publicMetadata": null,
      "createdAt": "2026-01-15T10:30:00.000Z",
      "updatedAt": "2026-01-15T10:30:00.000Z"
    }
  },
  "timestamp": "2026-01-15T10:30:00.000Z"
}
user.updated

Déclenché lorsque le profil ou les métadonnées d'un utilisateur sont mis à jour.

event.data
json
{
  "event": "user.updated",
  "data": {
    "user": {
      "id": "usr_abc123",
      "email": "user@example.com",
      "displayName": "John Doe (Updated)",
      "emailVerified": true,
      "isBanned": false,
      "avatarUrl": "https:0
      10: { 11: "pro" },
      "createdAt": "2026-01-15T10:30:00.000Z",
      "updatedAt": "2026-01-16T09:00:00.000Z"
    }
  },
  "timestamp": "2026-01-16T09:00:00.000Z"
}
user.deleted

Déclenché lorsqu'un compte utilisateur est définitivement supprimé. Le champ data contient un instantané de l'utilisateur avant la suppression.

event.data
json
{
  "event": "user.deleted",
  "data": {
    "user": {
      "id": "usr_abc123",
      "email": "user@example.com",
      "displayName": "John Doe",
      "createdAt": "2026-01-15T10:30:00.000Z"
    }
  },
  "timestamp": "2026-01-20T11:00:00.000Z"
}
user.signin

Déclenché lorsqu'un utilisateur se connecte avec succès via e-mail/mot de passe ou OAuth.

event.data
json
{
  "event": "user.signin",
  "data": {
    "user": {
      "id": "usr_abc123",
      "email": "user@example.com",
      "displayName": "John Doe",
      "emailVerified": true,
      "isBanned": false
    }
  },
  "timestamp": "2026-01-15T10:30:00.000Z"
}
user.signout

Déclenché lorsqu'un utilisateur se déconnecte explicitement.

event.data
json
{
  "event": "user.signout",
  "data": {
    "user": {
      "id": "usr_abc123",
      "email": "user@example.com",
      "displayName": "John Doe",
      "emailVerified": true,
      "isBanned": false
    }
  },
  "timestamp": "2026-01-15T12:00:00.000Z"
}
user.banned

Déclenché lorsqu'un utilisateur est banni par un administrateur. Toutes les sessions actives sont révoquées.

event.data
json
{
  "event": "user.banned",
  "data": {
    "user": {
      "id": "usr_abc123",
      "email": "user@example.com",
      "displayName": "John Doe",
      "isBanned": true
    }
  },
  "timestamp": "2026-01-15T10:30:00.000Z"
}
user.unbanned

Déclenché lorsque le bannissement d'un utilisateur est levé.

event.data
json
{
  "event": "user.unbanned",
  "data": {
    "user": {
      "id": "usr_abc123",
      "email": "user@example.com",
      "displayName": "John Doe",
      "isBanned": false
    }
  },
  "timestamp": "2026-01-16T10:00:00.000Z"
}

Événements de session

session.created

Déclenché lorsqu'une nouvelle session est créée — à la connexion ou au rafraîchissement du jeton.

event.data
json
{
  "event": "session.created",
  "data": {
    "session": {
      "id": "sess_abc123",
      "userId": "usr_abc123",
      "ipAddress": "203.0.113.1",
      "userAgent": "Mozilla/5.0...",
      "createdAt": "2026-01-15T10:30:00.000Z"
    },
    "user": {
      "id": "usr_abc123",
      "email": "user@example.com",
      "displayName": "John Doe"
    }
  },
  "timestamp": "2026-01-15T10:30:00.000Z"
}
session.revoked

Déclenché lorsqu'une session est révoquée — à la déconnexion ou par révocation forcée par l'administrateur.

event.data
json
{
  "event": "session.revoked",
  "data": {
    "session": {
      "id": "sess_abc123",
      "userId": "usr_abc123",
      "ipAddress": "203.0.113.1",
      "userAgent": "Mozilla/5.0...",
      "createdAt": "2026-01-15T10:30:00.000Z"
    },
    "user": {
      "id": "usr_abc123",
      "email": "user@example.com",
      "displayName": "John Doe"
    }
  },
  "timestamp": "2026-01-15T11:00:00.000Z"
}

Correspondance action → événement

Le tableau ci-dessous montre quelles actions SDK et opérations du tableau de bord déclenchent quels événements.

ActionÉvénements déclenchés
SDK: signup()user.created + session.created
SDK: signin()user.signin + session.created
SDK: signout()user.signout + session.revoked
SDK : connexion OAuth (nouvel utilisateur)user.created + session.created
SDK : connexion OAuth (utilisateur existant)user.signin + session.created
SDK: refreshTokens()session.revoked + session.created
Tableau de bord : bannir un utilisateuruser.banned
Tableau de bord : débannir un utilisateuruser.unbanned
Tableau de bord : supprimer un utilisateuruser.deleted
Tableau de bord : mettre à jour les métadonnéesuser.updated
API backend : créer un utilisateuruser.created
API backend : mettre à jour un utilisateuruser.updated
API backend : supprimer un utilisateuruser.deleted
API backend : bannir un utilisateuruser.banned
API backend : débannir un utilisateuruser.unbanned
SDK: revokeSession()session.revoked

Exemple de gestionnaire

Un gestionnaire d'événements minimal couvrant les cas de synchronisation utilisateur les plus courants :

routes/webhooks.ts
const { event, data } = JSON.parse(req.body.toString());

switch (event) {
  case "user.created":
    await db.users.create({ authonId: data.user.id, email: data.user.email });
    break;
  case "user.updated":
    await db.users.update({ authonId: data.user.id }, { name: data.user.displayName });
    break;
  case "user.deleted":
    await db.users.delete({ authonId: data.user.id });
    break;
  case "user.banned":
    await db.users.update({ authonId: data.user.id }, { suspended: true });
    break;
  case "user.unbanned":
    await db.users.update({ authonId: data.user.id }, { suspended: false });
    break;
  case "session.created":
    console.log(`${data.user.email} signed in from ${data.session.ipAddress}`);
    break;
}
Authon — Plateforme d’authentification universelle