
# Actions HTTP et webhook

La famille `http` effectue des appels HTTP sortants vers des API externes (éventuellement authentifiés via une connexion stockée). La famille `webhook` envoie des webhooks sortants signés et écrit une réponse personnalisée vers un déclencheur webhook entrant.

## HTTP — Requêtes sortantes

Six operators. L'operator générique `request` prend un `method` explicite ; les operators de verbe (`get`/`post`/`put`/`patch`/`delete`) sont des raccourcis et acceptent une référence `connection` pour les appels authentifiés.

| Operator  | Props clés                                                                               | Description                                                 |
| --------- | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| `request` | `url`, `method`, `headers?`, `body?`, `contentType?`, `timeout?`, `expectedStatus?`      | Requête générique avec une méthode explicite (templatable). |
| `get`     | `url`, `headers?`, `timeout?`, `expectedStatus?`, `connection?`                          | HTTP GET.                                                   |
| `post`    | `url`, `headers?`, `body?`, `contentType?`, `timeout?`, `expectedStatus?`, `connection?` | HTTP POST.                                                  |
| `put`     | _(identique à post)_                                                                     | HTTP PUT.                                                   |
| `patch`   | _(identique à post)_                                                                     | HTTP PATCH.                                                 |
| `delete`  | `url`, `headers?`, `body?`, `timeout?`, `expectedStatus?`, `connection?`                 | HTTP DELETE.                                                |

| Prop partagée    | Description                                                                                                                             |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `url`            | URL de la requête (templatable).                                                                                                        |
| `headers`        | Carte des en-têtes de requête (valeurs templatables, par ex. `Authorization: 'Bearer $env.API_KEY'`).                                   |
| `body`           | Corps de chaîne ou d'objet JSON.                                                                                                        |
| `contentType`    | `json` (par défaut) / `form` / `text` / `xml`.                                                                                          |
| `timeout`        | Timeout par requête en ms.                                                                                                              |
| `expectedStatus` | Tableau de codes de statut HTTP acceptables ; tout autre fait échouer l'étape.                                                          |
| `connection`     | Nom d'une [connexion](/fr/docs/automation-connections) stockée — injecte les informations d'identification OAuth2/clé API/basic/bearer. |

```yaml
- name: createContact
  type: http
  operator: post
  props:
    url: 'https://api.crm.example/contacts'
    connection: crm-oauth
    contentType: json
    body: { email: '{{trigger.data.email}}', name: '{{trigger.data.name}}' }
    expectedStatus: [200, 201]
```

:::callout
**Utilisez `connection` plutôt que d'incorporer des secrets en ligne.** Lorsqu'une `connection` est référencée, Sovrium attache le bon en-tête `Authorization` et (pour OAuth2) rafraîchit les jetons automatiquement. Définissez les connexions sous `app.connections`. Voir [Connexions](/fr/docs/automation-connections).
:::

## Webhook — Sortant et réponse

Deux operators. `send` déclenche un webhook sortant signé ; `response` écrit la réponse HTTP pour une automatisation démarrée par un **déclencheur webhook**.

| Operator   | Props                              | Description                                                                                     |
| ---------- | ---------------------------------- | ----------------------------------------------------------------------------------------------- |
| `send`     | `url`, `event`, `data?`, `secret?` | Envoie un webhook sortant avec un nom d'`event` et un `secret` HMAC optionnel.                  |
| `response` | `status?`, `body?`, `headers?`     | Définit la réponse HTTP renvoyée à l'appelant entrant (uniquement pour le déclencheur webhook). |

```yaml
# Notify a downstream service
- name: notifyDownstream
  type: webhook
  operator: send
  props:
    url: 'https://hooks.example.com/orders'
    event: order.created
    data: { id: '{{trigger.data.id}}' }
    secret: $env.OUTGOING_WEBHOOK_SECRET

# Reply to the inbound caller
- name: ack
  type: webhook
  operator: response
  props: { status: 200, body: { ok: true } }
```

:::callout
**Webhooks entrants vs sortants vs de table.** Le **déclencheur** `webhook` reçoit du HTTP entrant (voir [Déclencheurs](/fr/docs/automation-triggers)). L'**action** `webhook/send` poste du HTTP sortant depuis une automatisation en cours d'exécution. Séparément, les [webhooks de table](/fr/docs/table-webhooks) se déclenchent automatiquement à la création/mise à jour/suppression d'enregistrement sans automatisation. L'action `webhook/response` ne s'applique qu'aux automatisations démarrées par un déclencheur webhook.
:::

## Pages connexes

- [Connexions](/fr/docs/automation-connections) — informations d'identification OAuth2, clé API, basic, bearer.
- [Variables d'environnement](/fr/docs/automation-env-vars) — secrets `$env` utilisés dans les en-têtes.
- [Déclencheurs](/fr/docs/automation-triggers) — le déclencheur webhook entrant.
- [Webhooks de table](/fr/docs/table-webhooks) — webhooks sortants automatiques sur les événements d'enregistrement.
- [Actions de données et d'état](/fr/docs/automation-data-actions) — transformation des réponses HTTP.
