
# Vue d'ensemble des actions d'automatisation

Les actions sont les étapes individuelles qu'une automatisation exécute. Chaque action partage la même forme : un **`type`** et un **`operator`** qui sélectionnent ensemble l'opération, plus un objet **`props`** transportant ses entrées. Les étapes s'exécutent séquentiellement (de haut en bas) sauf si une action `path` ou `loop` crée une branche d'exécution.

```yaml
actions:
  - name: fetchUser # step name — referenced as {{fetchUser.result}}
    type: http # action family
    operator: get # operation within the family
    props: # operation-specific inputs
      url: 'https://api.example.com/users/{{trigger.data.userId}}'
      connection: example-api
```

## Le modèle d'action

| Élément    | Description                                                                                                                            |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `type`     | La **famille** d'action (par ex. `http`, `record`, `email`). Sélectionne la capacité générale.                                         |
| `operator` | L'**opération** au sein de la famille (par ex. `get`, `create`, `send`). Détermine la forme de `props`.                                |
| `props`    | Entrées spécifiques à l'opération. Les valeurs de chaîne prennent en charge les [variables de gabarit](/fr/docs/automations-overview). |

## Propriétés de base communes

Chaque action — quel que soit son `type`/`operator` — accepte ces champs de base :

| Propriété         | Description                                                                                                                                           |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`            | Nom de l'étape pour référencer les sorties (par ex. `fetchUser`). Doit correspondre à `^[a-zA-Z][a-zA-Z0-9_]*$`. **Requis.**                          |
| `label`           | Libellé lisible pour l'étape.                                                                                                                         |
| `retry`           | Politique de relance par action — `{ maxAttempts, delayMs?, strategy? }`. Voir [Relance et échec](/fr/docs/automation-retry-failure).                 |
| `continueOnError` | Booléen. Lorsqu'il vaut `true`, le workflow continue même si cette action échoue. Vaut `false` par défaut.                                            |
| `timeout`         | Timeout par action en millisecondes (1000–900000). Termine l'action de manière uniforme lorsqu'il est dépassé — distinct du `props.timeout` par type. |

:::callout
**Deux timeouts, deux portées.** Le champ `timeout` de premier niveau encadre l'action entière et est appliqué pour **chaque** type d'action. Un `props.timeout` (par ex. sur `http`, `code`, `automation/call`) encadre l'opération interne du gestionnaire. Le plus petit des deux l'emporte.
:::

## Exécution conditionnelle

Le branchement et le saut conditionnel sont gérés par des actions de contrôle de flux dédiées plutôt que par un champ `condition` par action :

- **`filter/continue`** — évalue un groupe de conditions ; si faux, `stop` (arrête) l'exécution ou `skip` (saute) à l'action suivante.
- **`path/branch`** — achemine vers des branches nommées en fonction de conditions par branche.

Voir [Contrôle de flux](/fr/docs/automation-flow-control) et [Actions de données et d'état](/fr/docs/automation-data-actions).

## Les ~22 familles d'actions

Chaque famille regroupe un ou plusieurs operators. Les pages ci-dessous documentent chaque operator.

| Famille      | Operators                                                                                                                                   | Page                                                            |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| `data`       | set, aggregate, sort, limit, deduplicate, merge, split, compare, lookup                                                                     | [Données et état](/fr/docs/automation-data-actions)             |
| `state`      | get, set, increment, delete, list                                                                                                           | [Données et état](/fr/docs/automation-data-actions)             |
| `filter`     | continue                                                                                                                                    | [Données et état](/fr/docs/automation-data-actions)             |
| `crypto`     | hash, hmac                                                                                                                                  | [Données et état](/fr/docs/automation-data-actions)             |
| `digest`     | collect, release                                                                                                                            | [Données et état](/fr/docs/automation-data-actions)             |
| `http`       | request, get, post, put, patch, delete                                                                                                      | [HTTP et webhooks](/fr/docs/automation-http-actions)            |
| `webhook`    | send, response                                                                                                                              | [HTTP et webhooks](/fr/docs/automation-http-actions)            |
| `record`     | create, read, update, delete, upsert, batchCreate, batchUpdate, batchDelete, batchUpsert                                                    | [Enregistrement et fichier](/fr/docs/automation-record-actions) |
| `file`       | upload, download, delete, copy, move, list, getMetadata, signUrl, generatePdf, generateCsv, parseCsv, extractText, transformImage, compress | [Enregistrement et fichier](/fr/docs/automation-record-actions) |
| `path`       | branch                                                                                                                                      | [Contrôle de flux](/fr/docs/automation-flow-control)            |
| `loop`       | each                                                                                                                                        | [Contrôle de flux](/fr/docs/automation-flow-control)            |
| `automation` | call, return                                                                                                                                | [Contrôle de flux](/fr/docs/automation-flow-control)            |
| `flow`       | stop                                                                                                                                        | [Contrôle de flux](/fr/docs/automation-flow-control)            |
| `email`      | send                                                                                                                                        | [E-mail et notifications](/fr/docs/automation-email-actions)    |
| `analytics`  | track                                                                                                                                       | [E-mail et notifications](/fr/docs/automation-email-actions)    |
| `ai`         | generate, classify, extract, agent                                                                                                          | [Actions IA](/fr/docs/automation-ai-actions)                    |
| `approval`   | request                                                                                                                                     | [Approbation et délai](/fr/docs/automation-approval-delay)      |
| `delay`      | wait, queue, webhook                                                                                                                        | [Approbation et délai](/fr/docs/automation-approval-delay)      |
| `auth`       | createUser, assignRole, banUser, unbanUser                                                                                                  | [Actions d'authentification](/fr/docs/automation-auth-actions)  |
| `code`       | runTypescript                                                                                                                               | [Actions de code](/fr/docs/automation-code-actions)             |
| `cloud`      | provision-db, spawn-app, route-add, disable-app, destroy-app                                                                                | [Actions cloud](/fr/docs/automation-cloud-actions)              |
| `ref`        | _(aucun operator)_                                                                                                                          | cette page                                                      |

## Modèles d'action réutilisables (`ref`)

Définissez une action réutilisable dans le tableau de premier niveau `app.actions[]`, puis invoquez-la depuis n'importe quelle automatisation avec une action `ref`. L'action `ref` n'a pas d'`operator` — elle transporte un `$ref` (nom du modèle) et un `$vars` optionnel (remplacements de substitution).

| Propriété | Description                                                                                  |
| --------- | -------------------------------------------------------------------------------------------- |
| `$ref`    | Nom du modèle d'action à invoquer (doit correspondre à un modèle dans `app.actions[]`).      |
| `$vars`   | Variables à substituer dans le modèle référencé (remplace les valeurs par défaut du modèle). |

```yaml
# Top-level reusable template
actions:
  - name: notify-slack
    type: http
    operator: post
    props:
      url: $env.SLACK_WEBHOOK_URL
      body: { text: '{{message}}' }

# Invoking it inside an automation
automations:
  - name: order-alert
    trigger: { type: record, table: orders, events: [create] }
    actions:
      - name: alert
        type: ref
        $ref: notify-slack
        $vars: { message: 'New order {{trigger.data.id}}' }
```

## Pages connexes

- [Vue d'ensemble des automatisations](/fr/docs/automations-overview) — l'anatomie déclencheur + actions.
- [Déclencheurs](/fr/docs/automation-triggers) — événements qui démarrent un workflow.
- [Relance et échec](/fr/docs/automation-retry-failure) — relance, timeout, idempotence.
- [Connexions](/fr/docs/automation-connections) — informations d'identification pour les actions authentifiées.
