Apply a preset attribute mapping profile

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

Replaces the fixed-target rules (email, names, groups…) of an enterprise connection with the rules of a preset profile: entra, okta, google, ping, jumpcloud or keycloak for SAML, generic for OIDC. Stored user_metadata.<key> rules are kept. The SAML subject attribute is not changed: the subject is configured separately, and changing it would orphan linked identities. If-Match is required as for replacing the list. Applying a profile that is already applied writes nothing. The write is audited as connection.attribute_mappings_replaced with the profile name.

Request

Field Type Required Description
connection_id path yes Enterprise connection ID (conn_…).
If-Match header yes The ETag from the last read. Missing: 428; stale: 412.
profile string yes entra, okta, google, ping, jumpcloud, keycloak (SAML) or generic (OIDC).

Response

200 OK with the stored list (see Get the attribute mappings) and the new ETag.

Errors

HTTP code When
404 not_found The connection does not exist in this environment or is not an enterprise connection.
409 conflict The connection's protocol has no attribute mappings (LDAP).
412 precondition_failed If-Match does not match the current version, or the list changed concurrently.
422 validation_failed profile is missing, unknown or not a preset of the connection's protocol (/profile), or a kept user_metadata rule reads a profile attribute with another NameFormat (/profile, conflicts_with_stored_mappings).
428 precondition_required The If-Match header is missing.
401 unauthenticated The credential is missing, invalid or revoked.
403 insufficient_permissions The credential lacks the required permission.
429 rate_limited The rate limit was exceeded; retry after the Retry-After period.
503 service_unavailable A dependency is temporarily unavailable; retry after the Retry-After period.

Example

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…"'