
# Obtener las asignaciones de atributos de una conexión

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

Devuelve las reglas de asignación de atributos de una conexión empresarial (SAML u OIDC), ordenadas por destino. Cada regla asocia un atributo o una reclamación enviada por el proveedor de identidad (`source_name`) con un campo de usuario (`target`). La cabecera `ETag` contiene la versión de la lista; envíela como `If-Match` cuando reemplace la lista o aplique un perfil predefinido. Una conexión sin reglas guardadas devuelve una lista vacía: al iniciar sesión se aplica el valor predeterminado de la plantilla (el perfil `generic` para OIDC; en SAML no se asigna nada). Las lecturas no se auditan.

## Solicitud

| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `connection_id` | ruta | sí | ID de la conexión empresarial (`conn_…`). |

## Respuesta

`200 OK` con la lista y 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"
    }
  ]
}
```

| Campo | Descripción |
|---|---|
| `target` | `email`, `given_name`, `family_name`, `name`, `locale`, `zoneinfo`, `phone`, `groups` o `user_metadata.<key>`. |
| `source_name` | Atributo SAML `Name` o nombre de reclamación OIDC (ruta con puntos, profundidad ≤ 3). |
| `source_name_format` | `NameFormat` de SAML con el que se lee el atributo; `null` coincide solo por nombre. |
| `overwrite` | `always` (en cada inicio de sesión), `if_empty` (solo cuando el campo está vacío) o `never` (solo al crear). |
| `profile` | Perfil predefinido del que procede la regla; `generic` para las reglas escritas a mano. |

## Errores

| HTTP | código | Cuándo |
|---|---|---|
| 404 | `not_found` | La conexión no existe en este entorno o no es una conexión empresarial. |
| 401 | `unauthenticated` | La credencial falta, no es válida o fue revocada. |
| 403 | `insufficient_permissions` | La credencial no tiene el permiso requerido. |
| 429 | `rate_limited` | Se superó el límite de tasa; reintente después del tiempo indicado en `Retry-After`. |
| 503 | `service_unavailable` | Una dependencia no está disponible temporalmente; reintente después del tiempo indicado en `Retry-After`. |

## Ejemplo

```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
```
