
# Obtenir les correspondances d'attributs d'une connexion

`GET /v1/connections/{connection_id}/attribute-mappings` · autorisation `connections:read`

Retourne les règles de correspondance d'attributs d'une connexion d'entreprise (SAML ou OIDC), classées par cible. Chaque règle associe un attribut ou une revendication envoyé par le fournisseur d'identité (`source_name`) à un champ utilisateur (`target`). L'en-tête `ETag` porte la version de la liste ; envoyez-la dans `If-Match` lorsque vous remplacez la liste ou appliquez un profil prédéfini. Une connexion sans règle enregistrée renvoie une liste vide : à la connexion, le profil par défaut du modèle s'applique (le profil `generic` pour OIDC ; rien n'est associé pour SAML). Les lectures ne sont pas auditées.

## Requête

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `connection_id` | chemin | oui | ID de la connexion d'entreprise (`conn_…`). |

## Réponse

`200 OK` avec la liste et un `ETag`.

```json
{
  "attribute_mappings": [
    {
      "target": "email",
      "source_name": "email",
      "source_name_format": null,
      "overwrite": "always",
      "profile": "okta"
    },
    {
      "target": "user_metadata.department",
      "source_name": "department",
      "source_name_format": "urn:oasis:names:tc:SAML:2.0:attrname-format:basic",
      "overwrite": "if_empty",
      "profile": "generic"
    }
  ]
}
```

| Champ | Description |
|---|---|
| `target` | `email`, `given_name`, `family_name`, `name`, `locale`, `zoneinfo`, `phone`, `groups` ou `user_metadata.<key>`. |
| `source_name` | Attribut SAML `Name` ou nom de revendication OIDC (chemin pointé, profondeur ≤ 3). |
| `source_name_format` | `NameFormat` SAML avec lequel l'attribut est lu ; `null` ne correspond que par le nom. |
| `overwrite` | `always` (à chaque connexion), `if_empty` (seulement si le champ est vide) ou `never` (seulement à la création). |
| `profile` | Profil prédéfini dont la règle est issue ; `generic` pour les règles saisies manuellement. |

## Erreurs

| HTTP | code | Cas |
|---|---|---|
| 404 | `not_found` | La connexion n'existe pas dans cet environnement ou n'est pas une connexion d'entreprise. |
| 401 | `unauthenticated` | L'identifiant est absent, invalide ou révoqué. |
| 403 | `insufficient_permissions` | L'identifiant ne dispose pas de l'autorisation requise. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; réessayez après la durée indiquée par `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez après la durée indiquée par `Retry-After`. |

## Exemple

```bash
curl -i "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/attribute-mappings" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

```bash
keenauth connections attribute-mappings get conn_01j9xp6q0r1s5t7v9w1x3y5z7b
```
