Actions d'approbation et de délai
Ces deux familles mettent en pause un workflow en cours d'exécution. La famille approval attend une décision humaine (human-in-the-loop). La famille delay attend une durée, une date-heure, un rappel de webhook externe, ou cadence une file d'éléments.
Approval — Human-in-the-loop
Un operator, request. Il suspend l'exécution, notifie les approbateurs, et reprend une fois qu'une décision est enregistrée (ou que le timeout se déclenche). Nécessite que app.auth soit configuré.
| Prop | Description |
|---|---|
approvers |
all-admins, ou un tableau d'adresses e-mail / noms de rôles. Requis. |
message |
Message affiché aux approbateurs (templatable). Requis. |
options |
Choix d'approbation, minimum 2 ({ value, label? }). Par défaut [{ value: approve }, { value: reject }]. La value choisie devient la sortie de l'étape. |
timeout |
Durée d'attente (par ex. 24h, 7d). Aucun timeout par défaut. |
onTimeout |
En cas de timeout : approve (approbation automatique), reject (rejet automatique), ou escalate (notifier l'escalade). |
notifyVia |
Canal de notification : email (par défaut), webhook, ou both. |
- name: approveRefund
type: approval
operator: request
props:
approvers: all-admins
message: 'Approve refund of ${{trigger.data.amount}} for order {{trigger.data.id}}?'
options:
- { value: approve, label: 'Approve refund' }
- { value: reject, label: 'Deny' }
timeout: 48h
onTimeout: reject
notifyVia: email
Branchez sur la décision. La sortie de l'étape d'approbation (la value de l'option choisie) alimente naturellement un path/branch afin que le workflow puisse emprunter des chemins différents selon approve ou reject.
Delay — Wait, Queue, Webhook
Trois operators qui mettent l'exécution en pause de différentes manières.
wait
Met en pause pendant une durée fixe ou jusqu'à une date-heure précise.
| Prop | Description |
|---|---|
duration |
Délai sous forme de nombre + unité (ms/s/m/h/d), par ex. 30s, 24h, 7d. |
until |
Date-heure ISO 8601 (ou gabarit) jusqu'à laquelle attendre, par ex. 2025-12-01T09:00:00Z. |
- name: cooldown
type: delay
operator: wait
props: { duration: 15m }
queue
Traite les éléments en file un par un avec un espacement configurable — idéal pour les API en aval à débit limité.
| Prop | Description |
|---|---|
interval |
Délai minimal entre le traitement de chaque élément — nombre + unité (ms/s/m/h), par ex. 500ms, 2s. Requis. |
maxQueueSize |
Nombre maximal d'éléments dans la file avant que les nouvelles entrées soient rejetées (par défaut illimité). |
- name: paceApiCalls
type: delay
operator: queue
props: { interval: 1s, maxQueueSize: 1000 }
webhook
Met en pause jusqu'à ce qu'un rappel de webhook externe soit reçu (par ex. la fin d'une tâche tierce asynchrone).
| Prop | Description |
|---|---|
callbackId |
Identifiant de rappel personnalisé (templatable). Généré automatiquement s'il est omis. |
timeout |
Temps maximal d'attente du rappel — nombre + unité, par ex. 1h, 7d. |
onTimeout |
En cas de timeout : continue, stop, ou error (par défaut error). |
expectedData |
Forme attendue utilisée pour valider la charge utile du rappel entrant. |
- name: awaitProcessing
type: delay
operator: webhook
props:
callbackId: 'job-{{trigger.data.id}}'
timeout: 2h
onTimeout: error
Pages connexes
- Vue d'ensemble des actions — propriétés de base et carte des familles.
- Contrôle de flux — brancher sur une décision d'approbation.
- HTTP et webhooks — réponses de webhook entrant et envois sortants.
- Vue d'ensemble de l'authentification —
app.auth(requis pour les approbations).