
# Aplicar un perfil predefinido de asignación de atributos

`POST /v1/connections/{connection_id}/attribute-mappings:apply-profile` · permiso `connections:write`

Reemplaza las reglas de destino fijo (correo electrónico, nombres, grupos…) de una conexión empresarial con las reglas de un perfil predefinido: `entra`, `okta`, `google`, `ping`, `jumpcloud` o `keycloak` para SAML, `generic` para OIDC. Las reglas `user_metadata.<key>` almacenadas se conservan. El atributo de sujeto de SAML no se modifica: el sujeto se configura por separado y cambiarlo dejaría huérfanas las identidades vinculadas. `If-Match` es obligatorio, igual que [al reemplazar la lista](put.md). Aplicar un perfil que ya está aplicado no escribe nada. La escritura se audita como `connection.attribute_mappings_replaced` con el nombre del perfil.

## Solicitud

| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `connection_id` | path | sí | ID de la conexión empresarial (`conn_…`). |
| `If-Match` | header | sí | El `ETag` de la última lectura. Si falta: `428`; si está obsoleto: `412`. |
| `profile` | string | sí | `entra`, `okta`, `google`, `ping`, `jumpcloud`, `keycloak` (SAML) o `generic` (OIDC). |

## Respuesta

`200 OK` con la lista almacenada (véase [Obtener las asignaciones de atributos](get.md)) y el nuevo `ETag`.

## Errores

| HTTP | código | Cuándo |
|---|---|---|
| 404 | `not_found` | La conexión no existe en este entorno o no es una conexión empresarial. |
| 409 | `conflict` | El protocolo de la conexión no tiene asignaciones de atributos (LDAP). |
| 412 | `precondition_failed` | `If-Match` no coincide con la versión actual, o la lista cambió de forma concurrente. |
| 422 | `validation_failed` | `profile` falta, es desconocido o no es un perfil predefinido del protocolo de la conexión (`/profile`), o una regla `user_metadata` conservada lee un atributo del perfil con otro NameFormat (`/profile`, `conflicts_with_stored_mappings`). |
| 428 | `precondition_required` | Falta el encabezado `If-Match`. |
| 401 | `unauthenticated` | La credencial falta, no es válida o ha sido revocada. |
| 403 | `insufficient_permissions` | La credencial no tiene el permiso requerido. |
| 429 | `rate_limited` | Se superó el límite de frecuencia; reintente después del periodo `Retry-After`. |
| 503 | `service_unavailable` | Una dependencia no está disponible temporalmente; reintente después del periodo `Retry-After`. |

## Ejemplo

```bash
curl -X POST "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/attribute-mappings:apply-profile" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H 'If-Match: "6f1c…"' \
  -d '{"profile":"entra"}'
```

```bash
keenauth connections attribute-mappings apply-profile conn_01j9xp6q0r1s5t7v9w1x3y5z7b --profile entra --if-match '"6f1c…"'
```
