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. 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) 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
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"}'
keenauth connections attribute-mappings apply-profile conn_01j9xp6q0r1s5t7v9w1x3y5z7b --profile entra --if-match '"6f1c…"'