Aller au contenu

Événements de la demande

Chaque demande de signature génère des événements qui tracent son cycle de vie : sa création, l'envoi de l'invitation, l'ouverture d'une session de signature, les relances, chaque signature, l'achèvement, l'annulation, les notifications de fin. Ces événements sont visibles dans le Tableau de bord, et exposés par l'API publique via le paramètre expand de l'endpoint Get request status :

GET /api/v1/requests/{request_id}?expand=events&expand=emails

expand=events ajoute le tableau events à la réponse, expand=emails le tableau emails. Les deux champs sont toujours présents : null signifie « non demandé ». Un tableau vide signifie « demandé, mais rien à montrer » : le cas se présente pour emails, jamais pour events, qui porte au minimum l'événement created de la demande.

Types d'événements

Les 14 types actuels, dans l'ordre du cycle de vie d'une demande.

Type d'événement Description
created La demande a été créée
invite_sent L'e-mail d'invitation a été envoyé au signataire
public_link_generated Un lien de signature public a été généré pour un signataire depuis la plateforme
embed_token_generated Un jeton de signature embarquée (iframe) a été émis pour un signataire via l'API
signer_session_accessed Le signataire a ouvert son lien de signature : une session de signature a été validée. Cet événement atteste de la validation du lien, pas de la consultation du document ni de sa lecture
signer_signed Un signataire a signé. Émis pour chaque signature, y compris la dernière
programmed_reminder_sent Une relance programmée a été envoyée au signataire
manual_reminder_sent Une relance déclenchée manuellement depuis la plateforme a été envoyée au signataire
partial_signed_notice_sent Un signataire a signé sans clore la demande ; l'avis de signature partielle a été envoyé à votre équipe
signer_completed_notice_sent La demande est complète ; l'accusé de réception a été envoyé à un signataire qui avait demandé à être notifié
completed_notice_sent La demande est complète ; l'e-mail de confirmation a été envoyé à votre équipe
completed La demande est complète : tous les signataires ont signé
cancelled La demande a été annulée
cancelled_notice_sent L'avis d'annulation a été envoyé au signataire

Champs d'un événement

Champ Description
event_type Le type ci-dessus. Énumération fermée
occurred_at Horodatage ISO 8601 UTC de l'événement (voir ci-dessous)
signer_id Le signataire concerné, ou null pour les événements au niveau de la demande, dont created et completed
email_id L'e-mail adossé à l'événement, ou null si l'événement n'en a pas. Clé de jointure vers le tableau emails
link_expires_at Expiration du lien de signature porté par l'événement, ou null pour les événements qui ne portent pas de lien

Le tableau est trié par occurred_at croissant. Il n'est jamais vide lorsqu'il est demandé : toute demande porte au minimum son événement created.

signer_signed n'est pas request.partial_signed

Le webhook request.partial_signed ne se déclenche que pour les signataires non derniers. La chronologie, elle, émet un signer_signed par signature, la dernière comprise, puis un completed au niveau de la demande. Une demande à signataire unique produit donc les deux : signer_signed puis completed.

occurred_at

Pour les sept types adossés à un e-mail (invite_sent, programmed_reminder_sent, manual_reminder_sent, cancelled_notice_sent, partial_signed_notice_sent, completed_notice_sent, signer_completed_notice_sent), occurred_at est l'instant où l'e-mail a été accepté par le fournisseur d'envoi. C'est l'horodatage que rapporte le webhook correspondant, et celui affiché dans le Tableau de bord.

Pour les quatre types d'action (signer_session_accessed, cancelled, public_link_generated, embed_token_generated), occurred_at est l'horodatage de l'événement lui-même : ces types ne sont adossés à aucun e-mail.

Les trois derniers types (created, signer_signed, completed) ne sont adossés ni à un e-mail ni à une ligne d'événement : ils rapportent l'horloge de la donnée qu'ils décrivent, respectivement la date de création de la demande (le champ created_at de la réponse), le signed_at du signataire concerné (celui de son entrée dans le tableau signers) et le signed_at de la demande. Le occurred_at de completed est donc toujours égal au signed_at de la réponse, et à l'horodatage du webhook request.completed.

Cinq types portent un lien de signature et renseignent donc link_expires_at ; les neuf autres le laissent à null.

Type d'événement Durée de vie du lien Mesurée depuis
invite_sent 30 jours l'envoi de l'e-mail
programmed_reminder_sent 30 jours l'envoi de l'e-mail
manual_reminder_sent 30 jours l'envoi de l'e-mail
public_link_generated 30 jours la génération du lien
embed_token_generated 2 heures l'émission du jeton

Pour la signature embarquée, un jeton expiré se renouvelle par l'endpoint Refresh iframe token ; voir Intégrer la signature sur votre application.

Types d'e-mail

expand=emails renvoie les e-mails que VoidSign a envoyés pour cette demande. Chaque ligne porte email_id, email_type, to_signer_id (le signataire destinataire, ou null lorsque le destinataire est un membre de votre équipe) et sent_at, l'instant de l'envoi, identique au occurred_at de l'événement correspondant. Le tableau est trié par sent_at croissant.

Type d'e-mail Destinataire Description
invite Signataire L'invitation à signer
reminder Signataire Une relance, programmée ou manuelle
partial_signed_notice Votre équipe Un signataire a signé, la demande reste incomplète
completed_notice Votre équipe La demande est complète
signer_completed_notice Signataire La demande est complète, envoyé au signataire qui avait demandé à être notifié
cancelled_notice Signataire La demande a été annulée

Liste exhaustive

Comme event_type, email_type est une énumération fermée : les six valeurs ci-dessus sont les seules qu'un e-mail rattaché à une demande peut porter.

Ce qui n'apparaît pas dans emails

Seuls les e-mails effectivement remis au fournisseur d'envoi apparaissent : un envoi en échec n'apparaît ni dans emails ni dans events.

Les autres types d'e-mail que VoidSign envoie n'apparaissent jamais dans ce tableau, pour deux raisons distinctes :

  • Ils ne concernent pas de demande de signature. Réinitialisation de mot de passe, invitations d'équipe et d'organisation, reçus de facturation, communications produit et messages d'accueil ne sont rattachés à aucune demande.
  • Ils concernent la demande mais ne produisent pas d'événement. L'e-mail de code à usage unique (OTP) de signature est rattaché à la demande et au signataire, mais ne génère aucun événement de demande. Ce tableau étant construit à partir des événements, l'OTP n'y figure pas et n'est pas traçable via cet endpoint.

Exemples de chronologie

Demande à deux signataires

Le premier signataire demande à recevoir le document final une fois la demande entièrement signée.

sequenceDiagram
    participant I as Initiateur
    participant V@{ "type" : "entity" } as VoidSign
    participant S1 as Signataire 1
    participant S2 as Signataire 2

    I->>V: created
    V->>S1: invite_sent
    V->>S2: invite_sent
    S1->>V: signer_session_accessed
    S1->>V: signer_signed
    V->>I: partial_signed_notice_sent
    V->>S2: programmed_reminder_sent
    S2->>V: signer_session_accessed
    S2->>V: signer_signed
    V-->>V: completed
    V->>I: completed_notice_sent
    V->>S1: signer_completed_notice_sent

Lien public

Le signataire est invité par un lien généré depuis la plateforme, que vous lui transmettez par vos propres moyens. Aucun e-mail d'invitation n'est envoyé : pour ce signataire, public_link_generated remplace invite_sent.

sequenceDiagram
    participant I as Initiateur
    participant V@{ "type" : "entity" } as VoidSign
    participant S as Signataire

    I->>V: created (mode public_link)
    I->>V: [Génère un lien public]
    V-->>I: public_link_generated
    I->>S: [Transmet le lien]
    S->>V: signer_session_accessed
    S->>V: signer_signed
    V-->>V: completed
    V->>I: completed_notice_sent

Signature embarquée

Le signataire signe dans une iframe affichée par votre application. Le jeton est émis à la création de la demande et renvoyé dans la réponse. Aucun e-mail d'invitation n'est envoyé : pour ce signataire, embed_token_generated remplace invite_sent.

sequenceDiagram
    participant A as Votre application
    participant V@{ "type" : "entity" } as VoidSign
    participant S as Signataire

    A->>V: created (mode caller_embed)
    V-->>A: embed_token_generated
    A->>S: [Affiche l'iframe de signature]
    S->>V: signer_session_accessed
    S->>V: signer_signed
    V-->>V: completed