# Credentials

Les credentials sont des secrets nommés et chiffrés que vos nœuds de workflow utilisent pour s'authentifier auprès de services externes. Vous les enregistrez une fois, puis vous les référencez par nom depuis n'importe quel nœud.

## Stockage

Chaque workspace a son propre credential store. Les credentials sont chiffrés au repos et déchiffrés uniquement au moment de l'exécution — la valeur du secret n'est jamais transmise au modèle.

Les secrets sont déchiffrés **uniquement à l'exécution du nœud** et injectés dans la requête HTTP, l'appel MCP ou le function tool sortant. Ils ne sont **jamais sérialisés dans le prompt du LLM** et n'apparaissent ni dans les configs ni dans les logs.

## Providers supportés

| Provider | Pour | Champs requis |
|----------|------|---------------|
| `http_bearer` | API utilisant `Authorization: Bearer <token>` | Secret |
| `http_apikey` | API utilisant un header API key (ex. `X-API-Key`) | Secret, nom du header dans metadata |
| `http_basic` | Authentification HTTP Basic | Mot de passe ou jeton ; utilisateur configuré dans le nœud |
| `gmail` | API Gmail (envoi + lecture) via OAuth | Utilisez le bouton **Connect Gmail** — les tokens sont stockés et auto-rafraîchis pour vous |
| `notion` | API Notion (integration token) | Integration token |
| `github_pat` | API GitHub et gestion du code source | PAT à permissions fines ou jeton OAuth |
| `smtp` | Envoi d'email via votre propre serveur SMTP (nœud Send Email) | Host, port, username, adresse From ; mot de passe comme secret |
| `imap` | Lecture des e-mails via IMAP | Host, port, SSL, utilisateur et mot de passe |
| `agent_builder_mail` | Envoi d'email via la boîte partagée de la plateforme | Aucun — configuration côté serveur, pas de secret à coller |
| `postgres_dsn` | Database Query vers PostgreSQL | Hôte, port, base, utilisateur, mot de passe et mode SSL |
| `mysql_dsn` | Database Query vers MySQL | Hôte, port, base, utilisateur et mot de passe |
| `custom` | Secret opaque consommé par votre Function tool | Secret |

## Créer un credential

1. Cliquez sur **Credentials** dans la barre latérale gauche.
2. Cliquez sur **+ Add credential** — ou sur **Connect Gmail** pour créer un credential `gmail` via la popup OAuth plutôt qu'en collant des tokens.
3. Remplissez :

| Champ | Notes |
|-------|-------|
| Name | Lisible, ex. `prod-stripe` |
| Provider | Choisi dans la liste ci-dessus |
| Champs adaptés au fournisseur | Le formulaire affiche la connexion base de données, l’en-tête de clé API, les réglages SMTP/IMAP ou les champs de jeton nécessaires |
| Secret | Token, clé API ou mot de passe (écriture seule) |
| Champs SMTP | `smtp` uniquement : host, port, STARTTLS, username, adresse From |
| Refresh token | Gmail uniquement, active l'auto-refresh |
| Métadonnées JSON avancées | Échappatoire optionnelle pour les providers personnalisés ; la configuration normale ne demande plus de modifier du JSON |

4. Sauvegardez. La ligne apparaît dans le tableau avec un bouton **Test** qui exécute un check d'authentification live (une URL vous sera demandée pour tester les credentials HTTP ; les credentials SMTP testent la connexion et le login sans envoyer de mail).

> Vous pouvez aussi connecter Gmail **directement depuis un nœud** : le champ Mailbox du nœud Send Email a son propre bouton Connect Gmail qui crée et auto-sélectionne le credential.

```json
{
  "name": "prod-stripe",
  "provider": "http_bearer",
  "secret_value": "sk_live_...",
  "metadata": null
}
```

## Utiliser un credential dans un nœud

Ouvrez n'importe quel nœud qui parle à un service externe (ex. **HTTP Request**, **Function tool**, **MCP**, trigger **Gmail**). Dans le config panel vous verrez une dropdown **Credential** listant tous les credentials dont le provider correspond. Choisissez-en un — c'est tout.

```yaml
http_request:
  method: POST
  url: https://api.stripe.com/v1/charges
  credential: prod-stripe   # injecté comme Authorization: Bearer ...
  body: { amount: 1000, currency: "usd" }
```

## Rotation et suppression

- Éditer un credential écrase le secret stocké. Les nœuds existants continuent de fonctionner dès le run suivant.
- La suppression est définitive. Tout nœud qui le référence encore échouera au prochain run avec une erreur d'auth — cherchez par nom avant de supprimer.

## Audit des credentials

La gouvernance des credentials utilise l'endpoint d'audit `GET /api/v1/credentials/{public_id}/audit` pour consulter les événements sensibles du cycle de vie d'un credential.

Actions auditées :

- `credential.create` — création du credential.
- `credential.update` — changement du nom, des metadata provider, de l'expiration ou d'autres champs non secrets.
- `credential.rotate` — remplacement du secret ou du refresh token.
- `credential.share` — partage du credential avec une équipe.
- `credential.revoke_share` — retrait de l'accès d'une équipe.
- `credential.test` — demande de test live auprès du provider.
- `credential.delete` — suppression du credential.

L'accès est limité au propriétaire du credential, aux admins workspace/team et aux membres avec le rôle `credential_admin` sur le workspace actif. Les lignes d'audit stockent uniquement des métadonnées : acteur, timestamp, action, identifiant/nom/provider du credential cible, contexte team/workspace et résumé caviardé des changements. Les valeurs de secret, refresh tokens, tokens OAuth, clés API, headers plaintext et références vault déchiffrées ne doivent jamais être écrits dans l'audit.

Pour la gouvernance SaaS, utilisez cet audit trail pour savoir qui a créé, rotaté, partagé, testé, révoqué ou supprimé des credentials de production, et pour prouver que les changements d'accès ont été revus sans exposer le secret sous-jacent.

## Garanties de sécurité

- Les secrets sont en écriture seule via l'API ; `GET` ne renvoie jamais le plaintext.
- Le frontend ne voit jamais les secrets déchiffrés.
- Les prompts LLM et arguments d'outils sont nettoyés de toute valeur provenant d'un credential.
- Les credentials sont rattachés à votre workspace et déchiffrés uniquement au moment de l'exécution — jamais exposés au modèle.

---

*Source: https://agentbuilder.systalink.sn/docs/credentials — human documentation.*
*Other language: [/docs-md/en/credentials.md](/docs-md/en/credentials.md).*
*Machine-readable index: [/llms.txt](/llms.txt).*
