
# Connexions

Les connexions stockent les informations d'identification de services externes **une seule fois** dans le tableau de premier niveau `app.connections[]`, puis les référencent depuis les actions HTTP et IA via `$connection.NAME`. Sovrium attache la bonne authentification à chaque requête et — pour OAuth2 — rafraîchit les jetons automatiquement.

```yaml
connections:
  - name: crm-oauth
    label: Acme CRM
    type: oauth2
    props:
      provider: google
      clientId: $env.GOOGLE_CLIENT_ID
      clientSecret: $env.GOOGLE_CLIENT_SECRET
      scopes: [openid, email, profile]
```

Chaque connexion partage trois champs de base et un objet `props` typé :

| Propriété     | Description                                                                                                         |
| ------------- | ------------------------------------------------------------------------------------------------------------------- |
| `name`        | Identifiant en kebab-case (`^[a-z][a-z0-9-]*$`, max 100). Référencé comme `$connection.NAME`. **Requis.**           |
| `label`       | Libellé lisible.                                                                                                    |
| `description` | À quoi sert la connexion.                                                                                           |
| `type`        | `oauth2` / `apiKey` / `basic` / `bearer`. **Requis.** Détermine la forme de `props`.                                |
| `props`       | Configuration d'identification spécifique au type (ci-dessous). Les valeurs secrètes devraient utiliser `$env.VAR`. |

Les noms de connexion doivent être uniques dans toute l'application.

## OAuth2

OAuth2 complet avec les grants authorization-code ou client-credentials, PKCE, rafraîchissement de jeton, et jetons par utilisateur vs partagés (application).

| Champ `props`          | Description                                                                                                                                                                                        |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `provider`             | Raccourci de fournisseur connu (par ex. `google`, `github`, `slack`). Peut inférer les URL d'auth/de jeton.                                                                                        |
| `clientId`             | ID client OAuth2 (prend en charge `$env.VAR`). **Requis.**                                                                                                                                         |
| `clientSecret`         | Secret client OAuth2 (prend en charge `$env.VAR`). **Requis.**                                                                                                                                     |
| `authorizationUrl`     | Point de terminaison d'autorisation (requis pour les fournisseurs personnalisés).                                                                                                                  |
| `tokenUrl`             | Point de terminaison de jeton (requis pour les fournisseurs personnalisés).                                                                                                                        |
| `scopes`               | Tableau de scopes à demander.                                                                                                                                                                      |
| `redirectUri`          | URI de redirection enregistrée auprès du fournisseur. Requise à l'exécution — la génération automatique n'est pas implémentée.                                                                     |
| `grantType`            | `authorizationCode` (par défaut) ou `clientCredentials`.                                                                                                                                           |
| `pkce`                 | Méthode PKCE : `S256` (recommandée), `plain`, ou `none` (par défaut).                                                                                                                              |
| `audience`             | Audience d'API / identifiant de ressource (par ex. une URL d'audience Auth0).                                                                                                                      |
| `authenticationMethod` | Comment les identifiants client sont envoyés sur les requêtes de jeton : `header` (HTTP Basic, par défaut RFC 6749) ou `body` (paramètres de formulaire). Honoré par le grant de rafraîchissement. |
| `extraAuthParams`      | Paramètres supplémentaires ajoutés à l'URL d'autorisation (par ex. `access_type: offline`, `prompt: consent`).                                                                                     |
| `extraTokenParams`     | Paramètres supplémentaires ajoutés aux requêtes d'échange de jeton.                                                                                                                                |
| `scope`                | Portée de la connexion : `app` (jeton partagé réservé aux administrateurs, par défaut) ou `user` (jetons par utilisateur).                                                                         |

```yaml
- name: hubspot
  type: oauth2
  props:
    clientId: $env.HUBSPOT_CLIENT_ID
    clientSecret: $env.HUBSPOT_CLIENT_SECRET
    authorizationUrl: 'https://app.hubspot.com/oauth/authorize'
    tokenUrl: 'https://api.hubapi.com/oauth/v1/token'
    scopes: [crm.objects.contacts.read]
    redirectUri: 'https://myapp.example.com/oauth/callback'
    pkce: S256
    scope: user
    extraAuthParams: { access_type: offline, prompt: consent }
```

:::callout
**Jetons d'application vs par utilisateur.** `scope: app` stocke un jeton partagé unique utilisable par les administrateurs. `scope: user` émet et stocke des jetons par utilisateur final, de sorte que les actions HTTP/IA de chaque utilisateur agissent en son nom. Les flux **client-credentials** (machine à machine, sans utilisateur) définissent `grantType: clientCredentials`. Le rafraîchissement de jeton se produit automatiquement ; la requête de rafraîchissement honore `authenticationMethod`.
:::

## Clé API

Clé API envoyée dans un en-tête configurable, avec un préfixe optionnel.

| Champ `props` | Description                                                         |
| ------------- | ------------------------------------------------------------------- |
| `key`         | Valeur de la clé API (généralement `$env.VAR`). **Requis.**         |
| `header`      | Nom de l'en-tête pour la clé (par défaut `X-API-Key`).              |
| `prefix`      | Préfixe avant la valeur dans l'en-tête (par ex. `Bearer`, `Token`). |

```yaml
- name: github-api
  type: apiKey
  props: { key: $env.GITHUB_TOKEN, header: Authorization, prefix: Bearer }
```

## Authentification basic

Authentification HTTP Basic.

| Champ `props` | Description                                                 |
| ------------- | ----------------------------------------------------------- |
| `username`    | Nom d'utilisateur (prend en charge `$env.VAR`). **Requis.** |
| `password`    | Mot de passe (prend en charge `$env.VAR`). **Requis.**      |

```yaml
- name: legacy-api
  type: basic
  props: { username: $env.LEGACY_USER, password: $env.LEGACY_PASS }
```

## Jeton bearer

Un jeton bearer statique envoyé dans l'en-tête `Authorization`.

| Champ `props` | Description                                                   |
| ------------- | ------------------------------------------------------------- |
| `token`       | Valeur du jeton bearer (généralement `$env.VAR`). **Requis.** |

```yaml
- name: internal-svc
  type: bearer
  props: { token: $env.INTERNAL_SERVICE_TOKEN }
```

## Référencer une connexion

Attachez une connexion à une action HTTP ou IA via la prop `connection` :

```yaml
- name: fetch
  type: http
  operator: get
  props: { url: 'https://api.example.com/me', connection: github-api }
```

## Pages connexes

- [HTTP et webhooks](/fr/docs/automation-http-actions) — actions qui consomment les connexions.
- [Actions IA](/fr/docs/automation-ai-actions) — fournisseurs IA authentifiés via des connexions.
- [Variables d'environnement](/fr/docs/automation-env-vars) — secrets `$env` référencés par les props de connexion.
- [Vue d'ensemble de l'authentification](/fr/docs/auth-overview) — authentification de l'utilisateur final (distincte des connexions sortantes).
