> ## Documentation Index
> Fetch the complete documentation index at: https://docs.solya.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Workflows — structure

> La structure complète d'un workflow : nœuds, arêtes, la définition de flux, statuts et modèle d'exécution.

Un **workflow** automatise une réaction à vos données : un **déclencheur** plus une chaîne d'**actions**, exécutées par la plateforme données. Cette référence documente le modèle complet. Pour le guide orienté utilisateur, voir [Étiquettes & automatisation → Workflows](/fr/automation/workflows).

## Définition de flux

Un workflow stocke une `flowDefinition` : un graphe de **nœuds** et d'**arêtes**.

```json theme={null}
{
  "nodes": [ { "id": "…", "type": "trigger", "position": { "x": 0, "y": 0 }, "data": { /* node data */ } } ],
  "edges": [ { "id": "…", "source": "<node id>", "target": "<node id>" } ]
}
```

| Élément   | Format                                                                                             |
| --------- | -------------------------------------------------------------------------------------------------- |
| **Nœud**  | `{ id, type, position: { x, y }, data }` — `data.nodeType` est l'autorité (`TRIGGER` ou `ACTION`). |
| **Arête** | `{ id, source, target }` — relie les ids des nœuds, définissant l'ordre d'exécution.               |

Les données `data` du nœud sont une union discriminée par `nodeType` / `actionType` :

* **Déclencheur** — `nodeType: "TRIGGER"` → voir [Déclencheurs](/fr/developers/workflows/triggers).
* **Action** — `nodeType: "ACTION"` avec un `actionType` de `CREATE_OR_GET_PLAN`,
  `ADD_ITEMS_TO_PLAN`, `CALL_WEBHOOK`, ou `SEND_EMAIL` → voir
  [Actions](/fr/developers/workflows/actions) et
  [Intégrations](/fr/developers/workflows/integrations).

## Enregistrement workflow

| Champ            | Signification                               |
| ---------------- | ------------------------------------------- |
| `name`           | Nom affiché (requis).                       |
| `description`    | Optionnel.                                  |
| `status`         | `DRAFT` · `ACTIVE` · `PAUSED` · `ARCHIVED`. |
| `flowDefinition` | Le graphe nœuds + arêtes.                   |

### Statut

```
DRAFT → ACTIVE ⇄ PAUSED → ARCHIVED
```

* **DRAFT** — modifiable, non déclenchable.
* **ACTIVE** — déclenchable ; seuls les workflows actifs s'exécutent.
* **PAUSED** — temporairement absent d'accepter les nouvelles exécutions.
* **ARCHIVED** — historique.

## Modèle d'exécution

Une exécution démarre depuis le **déclencheur** (qui résout les entités appariées), puis suit les
**arêtes** à travers les nœuds d'action dans l'ordre. Chaque nœud devient une **étape** avec son propre
statut, ses entrées résolues et sa sortie — et la sortie d'un nœud peut alimenter les nœuds ultérieurs via
[interpolation](/fr/developers/workflows/integrations#interpolation). Voir
[Exécutions & exemples](/fr/developers/workflows/runs-and-examples).

```mermaid theme={null}
flowchart TB
  T["Déclencheur<br/>résout les entités appariées"] --> P["CREATE_OR_GET_PLAN"]
  P --> I["ADD_ITEMS_TO_PLAN"]
  I --> W["CALL_WEBHOOK"]
  W --> E["SEND_EMAIL"]
```

Une chaîne d'exemple — votre workflow utilise les nœuds d'action que vous connectez ; chacun
devient une étape de l'exécution.

## Règles de validation

Le générateur applique quelques invariants :

* **Exactement un nœud déclencheur** par workflow.
* Le `planType` d'un nœud `ADD_ITEMS_TO_PLAN` doit **correspondre** au `CREATE_OR_GET_PLAN` qu'il
  référence via `sourcePlanNodeId`.
* `sourcePlanNodeId` doit pointer vers un nœud de création de plan existant.
* **Aucune arête circulaire.**
* Les pourcentages de remise sont limités à `[0, 100]`.

<Note>
  Continuez vers [Déclencheurs](/fr/developers/workflows/triggers),
  [Actions](/fr/developers/workflows/actions),
  [Intégrations & interpolation](/fr/developers/workflows/integrations), et
  [Exécutions & exemples](/fr/developers/workflows/runs-and-examples).
</Note>
